获取多列的计数并更新计数

时间:2019-05-17 12:42:42

标签: mysql

我有一个任务来更新mysql数据库中的计数

这是我尝试的:

update matchNew set counter =  (select first, last, city, state, 
count(*) AS count
GROUP BY first, last, city, state)
where id < 5

我想要做的是用第一个+最后一个+城市+状态出现的次数来更新计数器列。

然后更新每一行旁边的计数列。

此外,在这里,最理想的指标是第一个+最后一个+城市+州的综合索引?

我收到以下错误消息: 操作数应包含1列

谢谢!

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;