你好 - 我是 MySQL 菜鸟。我有一个包含各种企业列表的表,我正在尝试填充第二个名为“城市”的表,其中包含唯一的城市名称以及每个城市的列表数量。我可以执行 SELECT 语句来获取这些数据,如下所示:
SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
GROUP BY city
ORDER BY sum(count) DESC,city;
但是,现在我想更新表,但我似乎无法得到正确的语句来工作。这是我得到的最新消息,但我目前收到“组函数无效使用”错误。
INSERT INTO cities(city,state,size)
SELECT city,state,sum(count)
FROM (
SELECT city,state, 1 AS count FROM listings
) results
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), size=sum(count);
任何帮助表示赞赏!
像这样简单的事情会起作用吗?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
应确保没有重复,这样就不需要on duplicate key
。您正在执行的 sum() + 子查询操作看起来就像您只是在尝试执行 count(*) 操作。
您收到的具体错误是由于 size=sum(count) 造成的。在批量插入中,执行此操作的正确方法是 size=values(size),请参阅上的文档values().
EDIT:
如果它为每个城市添加另一个条目,那么城市上没有唯一索引,并且重复键无论如何也不会执行任何操作。
如果您在(城市,州)上添加唯一索引,那么您可以添加on duplicate key update size=values(size)
对于上面的查询,它将更新每条记录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)