2015-10-15 83 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