【问题标题】:SQL 'order by' first, and then next [duplicate]SQL'order by'首先,然后是下一个[重复]
【发布时间】:2013-09-28 09:37:05
【问题描述】:

我有一张桌子,比如

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

在这里,我尝试先按studentnameismanuallyaddedisedited 对数据进行排序。我期待这样的结果:

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

【问题讨论】:

  • 请解释预期结果的逻辑。
  • 我认为你有一个困惑:第一个结果是无序的。除了您指定之外,Sql 查询上没有 ORDER。您的第一个查询是随机顺序。也许等于插入数据的顺序,但只是随便。最后一个查询按字母顺序排列,正如您设置的 order by..
  • 您的排序顺序有误。你的意思是:按studentname排序,如果两个或多个studentname相同,按ismanuallyadd排序,如果两个或多个manualadded状态相同,按isedited排序。这与您想要的结果不符。
  • @MartinSmith 我已经更新了我的问题。你现在能检查一下吗

标签: sql sql-server-2008


【解决方案1】:

如果您想要指定的结果,则按ismanuallyadded然后 studentname 订购,而不是相反。

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

您当前的查询实际上变为:按studentname 排序,然后如果studentname 对多行相同,则按ismanuallyadded 排序。

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

【讨论】:

  • 我已经更新了我的问题,可以检查一下并帮助我。
  • 感谢您的回复
【解决方案2】:

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

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

试试这个:

select studentname from table1
order by isedited, ismanuallyadded, studentname

【讨论】:

  • 非常感谢,这正在工作。
【解决方案3】:

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

您的预期结果将通过排序顺序实现
按 isedited、ismanually added、studentname 排序

【讨论】:

  • 谢谢我得到了解决方案。
【解决方案4】:

试试这个

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

【讨论】:

  • 感谢 ramesh 的回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 2013-11-15
相关资源
最近更新 更多