如何在SQL中按多个列和不同方向进行排序。column1将按降序排序,column2将按升序排序。
当前回答
多列排序取决于两列的对应值:这是我的表示例,其中有两列用字母和数字命名,这两列中的值是asc和desc顺序。
现在我通过执行以下命令在这两列中执行Order By:
现在我再次在这两列中插入新值,其中字母值按ASC顺序排列:
示例表中的列如下所示。现在再次执行相同的操作:
您可以看到第一列中的值按降序排列,但第二列不按ASC顺序排列。
其他回答
其他答案缺少一个具体的例子,因此如下:
给定以下人员表:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
如果执行以下查询:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
结果集将如下所示:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
您还可以根据希望排序的每一列中的字符数进行排序或排序。下面显示的是一个示例,它按照名字的前三个字符和城镇名称的后两个字符进行排序。
SELECT *
FROM table_name
ORDER BY LEFT(FirstName, 3) ASC, LEFT(Town, 2);
TRY
'select * FROM users ORDER BY id DESC, name ASC, age DESC
多列排序取决于两列的对应值:这是我的表示例,其中有两列用字母和数字命名,这两列中的值是asc和desc顺序。
现在我通过执行以下命令在这两列中执行Order By:
现在我再次在这两列中插入新值,其中字母值按ASC顺序排列:
示例表中的列如下所示。现在再次执行相同的操作:
您可以看到第一列中的值按降序排列,但第二列不按ASC顺序排列。
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
推荐文章
- LEFT OUTER JOIN如何返回比左表中存在的记录更多的记录?
- 如何用SQL语句计算百分比
- Postgres唯一约束与索引
- SQL Server动态PIVOT查询?
- MySQL对重复键更新在一个查询中插入多行
- 向现有表添加主键
- 使用电子邮件地址为主键?
- MySQL:如何复制行,但改变几个字段?
- 不能删除或更新父行:外键约束失败
- MongoDB在v4之前不兼容ACID意味着什么?
- SQL WHERE ID IN (id1, id2,…idn)
- 最常见的SQL反模式是什么?
- 错误:没有唯一的约束匹配给定的键引用表"bar"
- 如何使用新的PostgreSQL JSON数据类型中的字段进行查询?
- 分组限制在PostgreSQL:显示每组的前N行?