SQL数据库在ASC中订购多列

时间:2019-02-14 08:07:51

标签: sql

首先,我先阅读所有帖子,然后再问这个问题,但不了解任何人,然后我尝试对表格中的所有列进行排序,如果该列为数字,则所有这些列都按升序排序,但是如果成功,列是varchar2,它只是对一列进行排序而忽略其他列。

例如此代码

SELECT first_name,last_name FROM employees
ORDER BY first_name , last_name DESC ;

the output is 请给我解释一下。 谢谢。

4 个答案:

答案 0 :(得分:0)

ORDER BY当然适用于数字和字符串数据类型。数字按数字排序,而字符串按字母排序(根据排序规则)。

在两列上排序时,如果第一列上有联系,则第二列开始起作用。

所以:

ORDER BY first_name , last_name DESC 

首先将按字母顺序对列的名字进行排序;当多个记录具有相同的名字时,它们将以相反的字母顺序在第二列上排序。

在这种情况下,我倾向于怀疑没有重复的名字,这就是为什么排序时不考虑第二列的原因。

答案 1 :(得分:0)

在SQL中,“行”是“固定的”,因此首先处理order by的第一个参数,然后如果第一行中有多个行具有相同的值,则处理第二个参数,依此类推。

我认为您的种子是

order by last_name, first_name

因此您先按照姓氏然后按名称对表进行排序

从开始到包括的“最佳实践”,对MS Sql Server文档进行here的了解,以了解更多信息(本节或多或少是通用的)

答案 2 :(得分:0)

对于多列,ORDER BY从左列移到右列。 意味着第一列将始终进行排序,第二列将相对于第一列进行排序

例如,在下表中,姓名为 Muhammad Ahmed 的人排在首位,然后按其名字分别为 Khan 阿里

| Firstname  | Lastname |
|------------|----------|
| Ahmed      | Ali      |
| Ahmed      | Khan     |
| Muhammad   | Ali      |
| Muhammad   | Khan     |

作为参考,请同时查看SQL Order By

答案 3 :(得分:0)

您的查询不是“忽略”列。 您可能会认为ORDER BY first_name , last_name DESC必须按降序对两列进行排序,但是那样行不通...

为您的ORDER BY子句的每个部分定义了排序类型(ASCENDING或DESCENDING),如果未明确指出其默认行为是ASCENDING。

然后,您正在订购ORDER BY first_name ASC, last_name DESC

如果您希望子句的两部分都以ORDER BY first_name DESC, last_name DESC降序排列

相关问题