我想按两列对我的产品表进行排序:prod_price和prod_name。
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按第一列进行排序,然后按指定语句中的每个其他列进行排序。
ORDER BY
例如,考虑以下数据:
Column1 Column2 ======= ======= 1 Smith 2 Jones 1 Anderson 3 Andrews
查询
SELECT Column1, Column2 FROM thedata ORDER BY Column1, Column2
首先将按中的所有值排序 Column1
Column1
然后对列进行排序Column2以产生此结果:
Column2
Column1 Column2 ======= ======= 1 Anderson 1 Smith 2 Jones 3 Andrews
换句话说,首先按Column1顺序对数据进行排序,然后按第二列的顺序对每个子集(Column1具有1其值的行)进行排序。
1
您发布的两个语句之间的区别是,第一个语句中的行将首先按prod_price(价格顺序,从最低到最高)排序,然后再按名称顺序排序(这意味着如果两个项目的价格相同,则一个名称的较低alpha值将首先列出),而第二个将仅按名称顺序排序(这意味着价格将基于prod_name不考虑价格的顺序出现)。