1

以下是我的查询,我试图在其中插入名称不存在于 food (insertion table) 中的那些记录。对于 id 生成,我试图从中获取计数food并向其添加一个,COUNT( food.FOOd_id ) +1 eg. Chineese_01然后将来自picktable 的名称与 table 的 foodname 进行比较food。为了允许插入那些不存在的名称。以下查询给出了正确的结果,但它插入一次(一行),当我再次运行它时,它再次插入一次,依此类推。请让我知道如何修改以下查询,以便它应该为所有人插入。谢谢

    INSERT IGNORE into food(FOOD_id,FOOD_name)
    Select CONCAT(  FOOD,"_", COUNT( food.FOOd_id ) +1 ),CONCAT(  Typ,CONCAT('(' ,family,')' )) from pick,food
    where CONCAT(  Typ,CONCAT('(' ,family,')' )) NOT IN (Select FOOD_name from food )

SQL FIDDLE:(用于测试和做出正确的查询)

http://sqlfiddle.com/#!2/91408/1

4

1 回答 1

1

问题是COUNT()在 SELECT 子句中是强制聚合,所以只会选择一行。您需要指定一个分组,或将其移至子查询。将此添加到查询的底部是解决它的一种方法:

GROUP BY pick.food, pick.typ, pick.family
于 2012-12-26T20:41:24.673 回答