我创建了一个表格:
CREATE TABLE my_table
(
value int(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我插入一些数据:
mysql> SELECT * FROM my_table;
+-------+
| value |
+-------+
| 0 |
| 1 |
| 2 |
| 3 |
+-------+
当我执行SELECT COUNT(value), value FROM my_table;
和SELECT COUNT(value), value FROM my_table ORDER BY value DESC;
时,他们都会显示:
+--------------+-------+
| COUNT(value) | value |
+--------------+-------+
| 4 | 0 |
+--------------+-------+
我的问题是:为什么右侧的列始终为0?为什么ORDER BY value DESC
在这里没有任何区别?
答案 0 :(得分:1)
ORDER BY
处理 后会生成结果。当您使用COUNT()
之类的聚合函数而没有GROUP BY
时,它会聚合所有选定的行,这会产生一行结果。任何非聚合列都来自不确定的行; ORDER BY
子句对如何选择此行没有影响。
答案 1 :(得分:-1)
ORDER BY对结果行进行排序。你要找的是值
上的MAX()或MIN()SELECT COUNT(value), MAX(value) FROM my_table;
SELECT COUNT(value), MIN(value) FROM my_table;