我有这张表:
CREATE TABLE IF NOT EXISTS `voertuiglijnen`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`voertuig` int(11) NOT NULL,
`lijn` text NOT NULL,
`publijn` int(11) NOT NULL,
`rit` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
这是一些示例输入:
|id |voertuig |lijn |publijn |rit
|------|------------|--------|-----------|-----
|1 |5376 |A060 |60 |1
|2 |5376 |A062 |62 |2
|3 |5376 |A062 |62 |3
我希望 SQL 结果显示每个“lijn”具有相同的“voertuig”,然后按“lijn”的出现次数排序。
SELECT DISTINCT `lijn`, `publijn`, count(*) as aantal
FROM `voertuiglijnen`
WHERE `voertuig` = '5376'
ORDER BY aantal DESC
在这种情况下,应该将 A062 放在第一位,将 A060 放在第二位。但事实恰恰相反。
我在这里做错了什么?
最佳答案
使用 GROUP BY 而不是 DISTINCT:
SELECT `lijn`, `publijn`, count(*) as aantal
FROM `voertuiglijnen`
WHERE `voertuig` = '5376'
GROUP BY 1,2
ORDER BY aantal DESC
关于MySQL 计算多列语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597962/