2015-10-15 56 views
0

去过订购通过练习一些SQL这里的更有效的方法:http://sqlzoo.net/wiki/SELECT_from_Nobel_Tutorial在SQL(SQLZoo练习)

对于最后一位(14),我们必须通过一定的列进行排序,但在列的特定字符串走到最后。这是我的查询:

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

有没有更有效的查询方式,而不使用大小写?

+0

效率取决于RDBMS和表结构,包括索引,这两者都不你的状态。 –

+0

另外,您并不需要担心在具有816行的表上进行简单查询的效率。当然,你可能想学习最佳实践,但正如@MartinSmith指出的那样,如果没有具体的细节,你不能[优化](http://stackoverflow.com/questions/385506/when-is-optimisation-premature)。 – Turophile

回答

0

这里的另一个有效的方法:

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