Ответ 1
INSERT INTO bad_data_table
SELECT *, 'The ID is NULL' AS Reason
FROM raw_data_table
WHERE id IS NULL;
У меня есть две таблицы, и моя цель - перенести определенные данные из первой таблицы во вторую таблицу вместе с причиной, по которой эти данные были перемещены. Например:
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";
Но это возвращает синтаксическую ошибку. Как скопировать всю строку и добавить значение причины?
INSERT INTO bad_data_table
SELECT *, 'The ID is NULL' AS Reason
FROM raw_data_table
WHERE id IS NULL;
Попробуйте этот запрос:
INSERT INTO bad_data_table VALUES (
(SELECT * FROM raw_data_table WHERE id IS NULL LIMIT 1), "The ID is NULL");
В подзапросе здесь должно быть 1 строка!
Просто установите значение по умолчанию столбца причины как "ИД: NULL", если все данные в этой таблице будут иметь нулевой идентификатор.
ИЛИ
Выполните другой запрос в новой таблице после перемещения строк:
UPDATE bad_data_table SET reason="The ID is NULL" WHERE id is NULL;