首先是sql命令,然后是next

时间:2013-09-23 13:10:05

标签: sql sql-server-2008

我有一张类似

的表格
STUDENTNAME   ISMANUALLYADDED   ISEDITED
-----------   ---------------   --------
APPLE              0               0
ANT                0               1
BELL               0               0
DOLL               1               0

在这里,我尝试先按studentname排序,然后按ismanuallyadded排序,再按isedited排序。我期待结果像

StudentName
-----------
APPLE
BELL
DOLL
ANT

为此,我想尝试,

select studentname from table1
order by studentname, ismanuallyadded, isedited

但是,此查询会给出结果,如

Student
-------
APPLE
ANT
BELL
DOLL

是否可以先按studentname订购,然后按ismanuallyadded ......

订购

任何人都可以帮助我,提前谢谢。

尝试的是,我应该按字母顺序显示所有学生姓名(manually addedisedited),然后只有ismanuallyadded名学生应该来,然后isedited

4 个答案:

答案 0 :(得分:13)

order by中的第二个条件仅在不同行在先前条件中具有相同值时使用。

您的行都有不同的studentname值,因此永远不会使用第二个和第三个标准。

试试这个:

select studentname from table1
order by isedited, ismanuallyadded, studentname

答案 1 :(得分:1)

试试这个

select studentname from table1
order by studentname ASC, ismanuallyadded ASC, isedited ASC 

答案 2 :(得分:1)

如果你想要你指定的结果,你可以通过ismanuallyadded和然后 studentname进行排序,而不是相反。

从table1中选择studentname 通过ismanuallyadded,studentname,isedited订购。

您当前的查询说:按学生名称排序,然后如果两行的学生名相同,则按顺序添加。你似乎想说ismanuallyadded,然后对于所有具有相同ismanuallyadded状态的人,给我那些由studentname排序的结果。

答案 3 :(得分:1)

要排序的第二个字段仅在第一个字段中找到具有相同值的多个条目时使用。你没有这种情况,所以它应该只按第一个字段排序(它应该在APPLE之前产生ANT ......)

您的预期结果将通过排序顺序来实现 按顺序排列,ismanuallyadded,studentname