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);
感谢任何帮助!
答案 0 :(得分:3)
这样的工作会简单吗?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
应该确保没有重复项,因此不需要on duplicate key
。你正在做的sum()+子查询看起来就像你只是想做一个计数(*)。
您获得的具体错误是因为size = sum(count)。在批量插入中,执行此操作的正确方法是size = values(size),请参阅values()
上的文档。
编辑:
如果它为每个城市添加了另一个条目,那么城市上没有唯一的索引,并且重复的密钥无论如何都不会做任何事情。
如果您在(城市,州)上添加唯一索引,则可以将on duplicate key update size=values(size)
添加到上述查询中,它将更新每个记录。
答案 1 :(得分:0)
尝试这一点,虽然我希望在释放它之前我有一些东西要测试它。
insert into cities (city, state, size)
select city, state, count(*) AS size
from listings
group by city, state