MySQL 计算多列语法

标签 mysql count

我有这张表:

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/

相关文章:

mysql - 选择带有左连接的 count(*)

R:计数 15 分钟的时间间隔

mysql - 糟糕的 MySQL 数据库设计?

php - 发布后仅允许显示文本字段的前 50-60 个字符

c++ - 设置 shared_ptr 并设置函数计数

python - 如何总结对话中每个人的字数?

python - 使用 Python 询问嵌套列表中的计数频率

mysql - Ant构建文件找不到mysql程序

mysql - 获取一年内完成的数据

mysql - VC++连接mysql关于Connection和Sql String