为什么在 MySQL 中的 ORDER 子句之后放置 LIMIT 子句?
Why a LIMIT clause is placed after ORDER clause in MySQL?
SELECT price FROM products LIMIT 1 ORDER BY price;
这是错误的
但是
SELECT price FROM products ORDER BY price LIMIT 1;
没关系,为什么?
LIMIT
必须在 ORDER
之后,因为必须先进行排序。在您的第一个查询中,您只需 select products
table 中列出的第一个 price
。在您的第二个(也是正确的)查询中,products
table 按 price
排序,然后 returns 仅按 1.
排序
是句法。同理ORDER BY
必须跟在SELECT
和FROM
之后
您的 SELECT 语句有两 (2) 个子句:ORDER BY 和 LIMIT。
根据 MySQL SELECT 语法,子句按特定顺序定义,如下图所示 MySQL website's SELECT syntax page.
允许在 LIMIT 子句之前使用 ORDER BY 子句,但不能反过来。
简单地说,因为我们检索了一个特定的答案,所以“LIMIT”子句在“ORDER BY”子句进行的排序过程后给了我们最终的正确选择
SELECT price FROM products LIMIT 1 ORDER BY price;
这是错误的 但是
SELECT price FROM products ORDER BY price LIMIT 1;
没关系,为什么?
LIMIT
必须在 ORDER
之后,因为必须先进行排序。在您的第一个查询中,您只需 select products
table 中列出的第一个 price
。在您的第二个(也是正确的)查询中,products
table 按 price
排序,然后 returns 仅按 1.
是句法。同理ORDER BY
必须跟在SELECT
和FROM
您的 SELECT 语句有两 (2) 个子句:ORDER BY 和 LIMIT。
根据 MySQL SELECT 语法,子句按特定顺序定义,如下图所示 MySQL website's SELECT syntax page.
允许在 LIMIT 子句之前使用 ORDER BY 子句,但不能反过来。
简单地说,因为我们检索了一个特定的答案,所以“LIMIT”子句在“ORDER BY”子句进行的排序过程后给了我们最终的正确选择