在MySQL中使用INSERT ... SELECT添加额外的列值

时间:2011-04-07 16:44:21

标签: 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";

但是这会返回语法错误。如何复制整行并添加原因值?

3 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:0)

如果该表中的所有数据都是null id,则将reason列的默认值设置为“ID为NULL”。

OR

移动行后在新表上执行另一个查询:

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

答案 2 :(得分:0)

尝试此查询:

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

这里的子查询需要有一行!