2011-12-07 43 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

我在'='附近得到错误的语法。 –