我有一个任务来更新mysql数据库中的计数
这是我尝试的:
update matchNew set counter = (select first, last, city, state,
count(*) AS count
GROUP BY first, last, city, state)
where id < 5
我想要做的是用第一个+最后一个+城市+状态出现的次数来更新计数器列。
然后更新每一行旁边的计数列。
此外,在这里,最理想的指标是第一个+最后一个+城市+州的综合索引?
我收到以下错误消息: 操作数应包含1列
谢谢!
答案 0 :(得分:1)
在实践中,使用诸如此类的派生计算进行更新可能不是最佳方法。在这种情况下,仅进行选择或创建视图可能是一个更好的主意。如果必须进行更新,则使用更新联接是一种可能:
UPDATE matchNew m1
INNER JOIN
(
SELECT first, last, city, state, cnt
FROM
(
SELECT first, last, city, state, COUNT(*) AS cnt
FROM matchNew
GROUP BY first, last, city, state
) t
) m2
ON m1.first = m2.first AND
m1.last = m2.last AND
m1.city = m2.city AND
m1.state = m2.state
SET counter = cnt
where m1.id < 5;