sql server中的ORDERBY子句

sql server中的ORDERBY子句,sql,Sql,假设有一个表,我需要按字母顺序对其中一列(名称)进行排序,同时我希望根据条件(具有相同名称的行)使用asc顺序的ID列对其进行排序。因此,我无法理解这将如何工作。一旦记录按列(名称)排序,它会使用id列对所有行进行排序吗? 有人能解释一下ORDERBY子句在这种情况下是如何工作的吗 select name, id from hack h order by name, id 使用按名称、id排序 select name,

假设有一个表,我需要按字母顺序对其中一列(名称)进行排序,同时我希望根据条件(具有相同名称的行)使用asc顺序的ID列对其进行排序。因此,我无法理解这将如何工作。一旦记录按列(名称)排序,它会使用id列对所有行进行排序吗? 有人能解释一下ORDERBY子句在这种情况下是如何工作的吗

   select name, 
          id  
     from hack h 
 order by name,
          id

使用
按名称、id排序

   select name, 
          id  
     from hack 
 order by name,
          id

我只是想理解你想知道的,你想知道当ORDERBY子句有两列或更多列时是如何发生的,对吗?让我们来看一个例子

the first column is id and the second is name,
2 A
5 B
6 A
3 A
1 B

the result of SQL "select name,id from hack order by name,id" will get the result as below
A 2
A 3
A 6
B 1
B 5

see, it will sort first by name column, and then sort id in the same name value group.

就这样,我说清楚了吗?

这回答了原来的问题。
在您发布的代码中:

substring(name, len(name) - 2, len(name))
返回
名称
的最后3个字符
因此,您是按最后3个字符排序,而不是按
名称排序

当有两个名称具有相同的最后3个字符时,这些名称将按
id

进行排序。如果“order by”关键字后有多个列名,系统将根据order by后的第一列对记录进行排序。

如果是tie,则按
子字符串(名称,len(name)-2,len(name))
(几个记录的
子字符串(name,len(name)-2,len(name))的值相同
),使用
id
如果您先按名称排序,然后按id列排序,那么您编写的查询是正确的。我的错。我刚刚意识到我编写了另一些代码。我现在更正了代码:)您能澄清您不理解的内容吗?你说的“这将如何运作”是什么意思?@user11497433。你已经描述了代码是如何工作的,所以我不明白需要解释什么。是的。我明白你们的意思,第二列将对同一名称值组中的id进行排序。感谢您的帮助:)欢迎,请为我单击“接受”按钮;-)。