在MySQL SELECT语句中计算多个列中的重复项并将其删除

在MySQL SELECT语句中计算多个列中的重复项并将其删除,mysql,select,count,Mysql,Select,Count,我在MySQL数据库中有一个表: number | string -------+------- 318 | no 504 | no 318 | yes 504 | no 60 | yes 我想计算发生次数并删除重复项,将计数添加到SELECT语句中的剩余行: number | string | count -------+--------+------ 60 | yes | 1 318 | no | 1 318 | yes

我在MySQL数据库中有一个表:

number | string
-------+-------
318    | no
504    | no
318    | yes
504    | no
60     | yes
我想计算发生次数并删除重复项,将计数添加到
SELECT
语句中的剩余行:

number | string | count
-------+--------+------
60     | yes    | 1
318    | no     | 1
318    | yes    | 1
504    | no     | 2

尽管给出了答案,但当我有多个列时,我无法思考如何计数才能获得此结果。

我想您只需要在
GROUP BY
子句中包含多个列。这应该起作用:

SELECT number, string, COUNT( number ) AS count
FROM foo
GROUP BY number, string
ORDER BY number, string

是的,它应该返回相同的结果。我通常会计算主键字段或我已经选择的字段,因为我相信这有时会影响性能。这里有一个更好的讨论: