插入不插入全部

时间:2012-12-26 20:03:39

标签: mysql

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

    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

1 个答案:

答案 0 :(得分:1)

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

GROUP BY pick.food, pick.typ, pick.family