2014-08-29 140 views
0

在mssql_query中,您可以使用类似SELECT * FROM table ORDER BY value1 DESC, value2 DESC的查询。我无法使用pdo sqlsrv执行此操作。pdo sqlsrv按多列排序

通过多列对查询结果进行排序的正确方法是什么?

的样本数据

|----------------------------------------| 
| id   value1  value2 | 
|----------------------------------------| 
| 4    119   21  | 
| 2    115   17  | 
| 1    114   10  | 
| 3    104   21  | 
|----------------------------------------| 

目前他们在4,2,1,3的顺序,但它们应该是4,2,3,1

+1

为什么“我无法用pdo sqlsrv做到这一点”?你得到任何错误?如果是,请将其添加到您的问题。 – Jens 2014-08-29 21:37:24

+0

没有错误。感觉就像第二个值2 DESC完全被忽略。 – ibab 2014-08-29 21:50:17

+0

你可以显示样本数据吗? – Jens 2014-08-29 21:51:12

回答

1

当你排序,在第一次排序后完成的任何排序仅在value1具有两个相同值时影响排序。我创建了一个SQL Fiddle来显示排序如何影响数据的顺序。

编辑:我创建了一个second fiddle(与第一个结果相结合),它显示了第一个排序列中不同值的结果在第二个排序列中有没有影响。

编辑2:这是fiddle,做OP的工作。它将作业级别从16分配到23,并将它们赋值为2,而其他所有级别的值都为1.然后在字符级别进行排序,然后如果2个字符具有基于作业级别排序的相同级别。 sqlsrv格式化小提琴可以是found here

+0

谢谢。这完全按照通缉。 – ibab 2014-08-29 22:37:21