mysql - SQL ORDER BY 多列

标签 mysql sql sql-order-by

我想按两列对我的产品表进行排序:prod_priceprod_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 顺序排序,然后是每个子集(Column11 为值的行) 按第二列的顺序排序。

您发布的两个语句之间的区别在于,第一个语句中的行将首先按 prod_price (价格顺序,从最低到最高)排序,然后按名称顺序(意思是如果两个项目的价格相同,则名称的 alpha 值较低的项目将首先列出),而第二个项目将仅按名称顺序排序(这意味着价格将根据 prod_name 不考虑价格)。

关于mysql - SQL ORDER BY 多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628277/

相关文章:

mysql - SQL ORDER BY 可与自定义 "comparators"配合使用吗?

mysql - 错误 1491 (HY000) : The PARTITION function returns the wrong type

mysql - 使用 Group By 子句时将描述连接在一起

mysql - Rails - 用同一张表的另一列检查列

mysql - 查找第二个表中缺少的记录

sql - SQLite3查询需要很多时间,您将如何处理?

sql - 在sql server中查找特定数据的最大值

mysql - Rails - 按条件和限制排序?

mysql - 如何为搜索项开头只有一个通配符(('%TERM')的文本搜索建立索引?

javascript - 使用 AJAX 根据选择填写表单字段