2011-12-07 53 views
0

我想選擇addressBook表的所有行,其中巴黎的地址將首先顯示。SQL:如何將優先級設置爲特定屬性?

我可以用一個T-SQL查詢來做到嗎?

更新: 試圖marc_s的解決方案, 但我可以做到這一點也當值的參數,而不是常量「巴黎」? 我得到附近有語法錯誤='

+0

你可以發佈你的表的結構嗎? – Maess

回答

1

一對夫婦的解決方案:

  1. 2相同選擇,先用從巴黎的條件地址,第二與不從巴黎和UNION和ORDER條件地址BY

  2. 在Select語句,創建一個人工列是0時,從巴黎,否則爲1和ORDER BY在這張桌子

  3. 創建一個新列序號或dering and ORDER BY this

解決方案的選擇取決於您的需求。我認爲,從維修的角度來看,(3)是最好的。

+0

我可以做到這一點,當值是一個參數,而不是const'巴黎'?我在'='' –

+0

附近得到了錯誤的語法。解決方法1是**錯誤** - 除非有'ORDER BY'子句,否則* UNION或UNION ALL的結果順序不能保證。 –

+0

當然,在那裏添加了這個。謝謝。 –

3

是 - 肯定:

SELECT 
    (some columns), 
    SortOrder = CASE WHEN City = 'Paris' THEN 0 ELSE 1 END 
FROM 
    dbo.addressBook 
ORDER BY 
    SortOrder 
+1

+1這就是我會這樣做的。 – JonH

+0

我可以做到這一點,當值是一個參數,而不是const'巴黎'? –

+0

我在'='附近得到錯誤的語法。 –