Sql 如何按顺序使用in子句?

Sql 如何按顺序使用in子句?,sql,sql-server,Sql,Sql Server,[在此处输入图像描述][1] 特殊字符会影响我的排序顺序吗 我尝试在SQLServer中解决这个查询[在图中提供],然后知道in子句不适用于ORDERBY 当我试图通过案例解决它时,输出仍然是错误的,因为名为“Desmond Tutu”的人显示在第一个位置。谁能告诉我原因吗 我通过给予三个不需要的优先权来解决问题。 有人能帮我解决这个问题吗。 谢谢 您需要对人名进行二次排序 按第一条,第二条排序 另外,在你的案例中添加一个else来对其余的进行排序。你没有得到想要的结果的原因是你只把化学和物理推

[在此处输入图像描述][1]

特殊字符会影响我的排序顺序吗

我尝试在SQLServer中解决这个查询[在图中提供],然后知道in子句不适用于ORDERBY

当我试图通过案例解决它时,输出仍然是错误的,因为名为“Desmond Tutu”的人显示在第一个位置。谁能告诉我原因吗

我通过给予三个不需要的优先权来解决问题。 有人能帮我解决这个问题吗。
谢谢

您需要对人名进行二次排序

按第一条,第二条排序


另外,在你的案例中添加一个else来对其余的进行排序。

你没有得到想要的结果的原因是你只把化学和物理推到了最后,而没有对其余的进行排序-如果你没有明确指定排序,服务器可以自由地以任何可行的顺序返回结果。请记住,查询的结果是集合,或者有时是标量值和集合(按定义)是无序的

如问题陈述所示,按主题和获奖者姓名排列1984年获奖者和主题;但把化学和物理列在最后。您需要在订单中包含主题和获奖者姓名

此外,本练习旨在说明如何使用in子句的布尔返回值来影响顺序,考虑到这一点,正确的查询应该是:

SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY subject IN ('Physics','Chemistry'), subject, winner

图像不可读,文本比图像好得多。你到底想做什么?你试过使用where子句吗?我也同意至少select语句应该是文本。我甚至不知道IN可以用在order by子句+1中。另外,我在这里做了一个小测试选择。。。。。。。在mysql的1,2中按id排序它将这两个值作为最后一个值排序:表have:1,2,3,4,然后是3,4,1,2,这正常吗?@JorgeCampos我想这是正常的,因为1,2中的id将为[1,2]返回1,为[3,4]返回0,因此先排序[3,4],但[3,4]的顺序是不确定的,也可能是[4,3],最有可能的插入顺序是使用DHMM,有趣,有意义。谢谢大家,非常感谢。从诺贝尔奖中按案例依次选择获奖者、科目“物理”时的科目,然后选择3个“化学”时的科目,最后选择2个,科目、获奖者工作正常。谢谢,大家好,非常感谢。从诺贝尔奖中按案例依次选择获奖者、科目“物理”时的科目,然后选择3个“化学”时的科目,最后选择2个,科目、获奖者工作正常。谢谢