SQL中更有效的排序方式(SQLZoo练习)

SQL中更有效的排序方式(SQLZoo练习),sql,Sql,一直在这里练习SQL: 对于最后一位(14),我们必须按某一列进行排序,但列中的某些字符串必须排在最后。这是我的疑问: SELECT winner, subject FROM nobel WHERE yr = 1984 ORDER BY CASE WHEN subject IN ('Chemistry', 'Physics') THEN 2 ELSE 1 END, subject, winner 有没有一种更有效的方法可以在不使用案例的情况下查询这些内容?这里是另一种有效的方法: SEL

一直在这里练习SQL:

对于最后一位(14),我们必须按某一列进行排序,但列中的某些字符串必须排在最后。这是我的疑问:

SELECT winner, subject 
FROM nobel 
WHERE yr = 1984 
ORDER BY CASE WHEN subject IN ('Chemistry', 'Physics') THEN 2 ELSE 1 END, subject, winner

有没有一种更有效的方法可以在不使用案例的情况下查询这些内容?

这里是另一种有效的方法:

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

效率取决于RDBMS和表结构,包括索引,这两种结构都不是您所说的。此外,对于一个包含816行的表,您不必担心简单查询的效率。当然,您可能想学习最佳实践,但正如@MartinSmith所指出的,没有具体的细节,您就无法学习。