我想创建一个INSERT查询,但是在标题中也是如此 - 只有当tab2没有记录时。然后查询添加带有空值的tab1记录。我想改变它。当tab2没有记录时,查询不会向tab1添加记录。我该怎么办?
查询目前看起来像这样:
INSERT INTO `tab1` (SELECT `id`, `value`, `another_value` FROM `tab2`);
好的,我解释一下。
我有tab2,如果tab2
。status
= 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());
答案 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`);