這可能是一個不好的例子,但我認爲它很簡單。 讓我們假設一個網絡搜索引擎(如Google)正在檢索用戶執行搜索的結果(鏈接到網站),並且它應該根據語言和國家的給定優先級同時對它們進行排序。再說了,SQL中SELECT查詢的優先級
語言優先
1. English
2. Spanish
3. Italian
...
國家重點
1. USA
2. England
3. Canada
4. Spain
5. Mexico
...
那麼,結果將是什麼樣訂購
Websites in english and from the USA
Websites in spanish and from the USA or in english and from England
...
Websites in italian and from Mexico (?).
像
SELECT url FROM websites
WHERE (
language = english
OR language = spanish
OR language = italian
) AND (
country = USA
OR country = England
OR country = Canada
OR country = Spain
OR country = Mexico)
查詢
顯然不起作用,因爲它提供了一個條件,而不是優先級。使用ORDER BY language
或ORDER BY timezone
將不起作用,因爲它按字母順序排列。那麼,在SQL中如何解決這個問題呢?
+1,但我會將`ORDER BY`子句概括爲'ORDER BY表達式(languages.priority,countries.priority)` – newtover 2011-12-16 12:36:23