0

我想创建一个 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());
4

2 回答 2

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
于 2013-11-01T20:08:08.367 回答
0

你可以使用 IFNULL()

INSERT INTO `tab1` (SELECT IFNULL(`id`,''), IFNULL(`value`,''), IFNULL(`another_value`,'') FROM `tab2`);
于 2013-11-01T20:11:13.233 回答