排序

ORDER BY之后,NULL的结果会汇集在开头或者结尾。但究竟是开头还是结尾,没有特殊规定。
在排序键中可以使用别名
SELECT
    product_id AS id,
    product_name,
    sale_price AS sp,
    purchase_price
FROM
    Product
ORDER BY
    sp,
    id;

那么,前面说,GROUP BY中不能用别名的原因是GROUP BY会在SELECT之前运行,那么ORDER BY可以使用的原因就是ORDER BY在SELECT之后运行了。

FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> ORDER BY

ORDER BY中可以使用不在SELECT中的列
SELECT
    product_name,
    sale_price,
    purchase_price
FROM
    Product
ORDER BY
    product_id;
ORDER BY中可以使用聚合函数
SELECT
    product_type,
    COUNT(*)
FROM
    Product
GROUP BY
    product_type
ORDER BY
    COUNT(*);

其实上面这个句子和下面这个句子应该是一回事。

SELECT
    product_type,
    count(*) AS cnt
FROM
    product
GROUP BY
    product_type
ORDER BY
    cnt;
在 ORDER BY 子句中可以使用 SELECT 子句中未使用的列和聚合函数。
SELECT
    product_type,
    COUNT(*)
FROM
    Product
GROUP BY
    product_type
ORDER BY
    AVG(sale_price);

你可能感兴趣的:(排序)