【发布时间】:2013-11-13 02:32:20
【问题描述】:
我想创建一个 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());
【问题讨论】:
-
什么意思?这是默认行为。如果
tab2为空,则此查询将向tab1添加零 条记录。 -
亲爱的geomagas - 是的,这是我的问题。我只想添加非空值和查找方法,我该怎么做。
-
“当 tab2 没有记录时,则查询添加带有空值的 tab1 记录”:不,这不会发生在您的查询中 .除非我错过了什么。
-
啊,没关系。造成这种行为的是
GROUP_CONCAT()。无论 table2 有一百万行还是零行,您的所有行都聚合为 1 行。 -
@ypercube -
GROUP BY正在工作。非常感谢,写下答案然后我接受你的答案