8

我有一张桌子,类似

STUDENTNAME   ISMANUALLYADDED   ISEDITED
-----------   ---------------   --------
APPLE              0               0
ANT                0               1
BELL               0               0
DOLL               1               0

在这里,我尝试先对数据进行排序studentnameismanuallyadded然后是isedited。我期待这样的结果:

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

为此,我正在尝试,

select studentname from table1
order by studentname, ismanuallyadded, isedited

但是,这个查询给出的结果是,

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

可以先下单studentname再下单ismanuallyadded吗?

我试图按字母顺序显示所有学生姓名(既不manually added也不isedited),然后只有ismanuallyadded学生应该来,然后isedited

4

4 回答 4

22

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

您的行都有不同studentname的值,因此从不使用第二个和第三个条件。

尝试这个:

select studentname from table1
order by isedited, ismanuallyadded, studentname
于 2013-09-23T13:16:50.447 回答
3

尝试这个

select studentname from table1
order by studentname ASC, ismanuallyadded ASC, isedited ASC 
于 2013-09-23T13:13:58.803 回答
1

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

您的预期结果将
通过 isedited、ismanuallyadd、studentname的排序顺序来实现

于 2013-09-23T13:21:09.830 回答
1

如果您想要指定的结果,则按ismanuallyaddedand排序, studentname不是相反。

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

您当前的查询实际上变为: order by studentname,然后如果studentname多行相同, order by ismanuallyadded

您似乎想按 排序ismanuallyadded,然后按 对具有相同ismanuallyadded状态的所有行进行排序studentname

于 2013-09-23T13:14:36.570 回答