首先,我先阅读所有帖子,然后再问这个问题,但不了解任何人,然后我尝试对表格中的所有列进行排序,如果该列为数字,则所有这些列都按升序排序,但是如果成功,列是varchar2,它只是对一列进行排序而忽略其他列。
例如此代码
SELECT first_name,last_name FROM employees
ORDER BY first_name , last_name DESC ;
答案 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
降序排列