为什么在MySQL中的ORDER子句之后放置LIMIT子句?

时间:2017-08-03 15:26:35

标签: mysql sql rdbms clause

SELECT price FROM products LIMIT 1 ORDER BY price; 
这是错的 但

SELECT price FROM products  ORDER BY price LIMIT 1; 

这没关系,为什么?

3 个答案:

答案 0 :(得分:2)

这是语法。出于同样的原因,ORDER BY必须遵循SELECTFROM

答案 1 :(得分:2)

您的SELECT语句有两(2)个子句:ORDER BY和LIMIT。

根据MySQL SELECT语法,子句按特定顺序定义,如MySQL website's SELECT syntax page中的下图所示。

enter image description here

在LIMIT子句之前允许ORDER BY子句,但不允许相反。

答案 2 :(得分:1)

LIMIT必须在ORDER之后,因为必须先完成排序。在第一个查询中,您只需选择price表中列出的第一个products即可。在您的第二个(并且正确的)查询中,products表按price排序,然后仅返回1.