以下是我的查询,其中我试图插入那些名称在食物中不存在的记录(插入表)。对于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:(用于测试和进行正确的查询)
答案 0 :(得分:1)
问题是SELECT子句中的COUNT()
强制聚合,因此只选择一行。您需要指定分组,或将其移动到子查询。将其添加到查询的底部是解决它的一种方法:
GROUP BY pick.food, pick.typ, pick.family