MySQL查询在使用order by时没有区别

时间:2015-08-03 09:24:57

标签: mysql database

我创建了一个表格:

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在这里没有任何区别?

2 个答案:

答案 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;