当`tab2`没有记录时,INSERT INTO`tab1` SELECT`tab2`放入空值

时间:2013-11-01 19:57:23

标签: mysql sql select insert

我想创建一个INSERT查询,但是在标题中也是如此 - 只有当tab2没有记录时。然后查询添加带有空值的tab1记录。我想改变它。当tab2没有记录时,查询不会向tab1添加记录。我该怎么办?

查询目前看起来像这样:

INSERT INTO `tab1` (SELECT `id`, `value`, `another_value` FROM `tab2`);

好的,我解释一下。

我有tab2,如果tab2status = 1,则此记录将复制到tab1。但是如果tab2没有任何记录,那么在tab1中将添加记录,其中id是下一个值而不是id之前的值,其他值是0或NULL。我想更改它,如果tab2没有记录,则查询不会将空记录添加到tab1

我真正的疑问是:

INSERT INTO `troops_support` (SELECT NULL AS `id`, `from`, `fromType`, `to`, `toType`, GROUP_CONCAT(`army` SEPARATOR ":") FROM `army_actions` WHERE `type`=0 AND (`start`+`duration`)<=UNIX_TIMESTAMP());

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

If SELECT COUNT(*) FROM table_2 > 0
BEGIN
INSERT INTO table_1
SELECT case when table_2_column_1 IS NOT NULL 
             THEN table_2_column_1
             else '' 
   END AS table_1_column1,
   case when table_2_column_2 IS NOT NULL 
             THEN table_2_column_2
             else '' 
   END AS table_1_column2
FROM table_2
END

答案 1 :(得分:0)

你可以使用IFNULL()

INSERT INTO `tab1` (SELECT IFNULL(`id`,''), IFNULL(`value`,''), IFNULL(`another_value`,'') FROM `tab2`);