排序

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);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容