Добавление дополнительного значения столбца с помощью INSERT... SELECT в MySQL

У меня есть две таблицы, и моя цель - перенести определенные данные из первой таблицы во вторую таблицу вместе с причиной, по которой эти данные были перемещены. Например:

raw_data_table

SELECT * FROM raw_data_table where id IS NULL;

Я хотел бы переместить это во вторую таблицу, которая идентична первой таблице, за исключением дополнительного столбца reason. Я пробовал:

INSERT INTO bad_data_table 
(SELECT * FROM raw_data_table WHERE id IS NULL), "The ID is NULL";

Но это возвращает синтаксическую ошибку. Как скопировать всю строку и добавить значение причины?

Ответ 1

INSERT INTO bad_data_table 
SELECT *, 'The ID is NULL' AS Reason
FROM raw_data_table
WHERE id IS NULL;

Ответ 2

Попробуйте этот запрос:

INSERT INTO bad_data_table VALUES (
(SELECT * FROM raw_data_table WHERE id IS NULL LIMIT 1), "The ID is NULL");

В подзапросе здесь должно быть 1 строка!

Ответ 3

Просто установите значение по умолчанию столбца причины как "ИД: NULL", если все данные в этой таблице будут иметь нулевой идентификатор.

ИЛИ

Выполните другой запрос в новой таблице после перемещения строк:

UPDATE bad_data_table SET reason="The ID is NULL" WHERE id is NULL;