我想按两列对我的产品表进行排序:prod_price
和 prod_name
。
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
这里是如何排序的?我认为它首先由 prod_price
发生,然后由 prod_name
发生。另外,上面的查询与这个查询有何不同:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_name;
我的产品表如下:
CREATE TABLE Products
(
prod_id char(10) NOT NULL ,
vend_id char(10) NOT NULL ,
prod_name char(255) NOT NULL ,
prod_price decimal(8,2) NOT NULL ,
prod_desc text NULL
);
最佳答案
ORDER BY
中的排序由第一列完成,然后由指定语句中的每个附加列完成。
例如,考虑以下数据:
Column1 Column2
======= =======
1 Smith
2 Jones
1 Anderson
3 Andrews
查询
SELECT Column1, Column2 FROM thedata ORDER BY Column1, Column2
将首先按 Column1
然后按 Column2
对列进行排序以生成:
Column1 Column2
======= =======
1 Anderson
1 Smith
2 Jones
3 Andrews
换句话说,数据首先按 Column1
顺序排序,然后是每个子集(Column1
以 1
为值的行) 按第二列的顺序排序。
您发布的两个语句之间的区别在于,第一个语句中的行将首先按 prod_price
(价格顺序,从最低到最高)排序,然后按名称顺序(意思是如果两个项目的价格相同,则名称的 alpha 值较低的项目将首先列出),而第二个项目将仅按名称顺序排序(这意味着价格将根据 prod_name
不考虑价格)。
关于mysql - SQL ORDER BY 多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628277/