MS SQL特定的排序

时间:2014-01-28 10:24:13

标签: asp.net sql-server sql-order-by

我的英语无助于解释我的问题,但我会试一试。

假设我们有一张表(photoId,_bandId,desc)

现在我们有一组记录

1, 1000, TestDesc1 
2, 1000, TestDesc2 
3, 1010, TestDesc3 
4, 1900, TestDesc4 
5, 1000, TestDesc5 

我试图找到一个选择命令,其中获取特定[_bandId]的所有[desc] 但作为第一个结果我想要一个特定的photoId

我用的是什么,

SELECT * FROM [myTable]
WHERE _bandId = (SELECT _bandId from [myTable] where photoId=2)

这当然是我的输出:

TestDesc1 
TestDesc2 
TestDesc5 

但我真正需要的是输出

TestDesc2 
TestDesc1 
TestDesc5 

亲切的问候 康斯坦丁诺

1 个答案:

答案 0 :(得分:3)

添加order by并将case作为第一个参数,您可以在其中为首先需要的记录创建一个值,为其他记录创建一个值。之后,您可以添加更多参数,以便对备份记录进行排序,例如在描述:

SELECT
  *
FROM
  [myTable]
WHERE
  _bandId = (SELECT _bandId from [myTable] where photoId=2)
ORDER BY
  CASE PhotoId WHEN 2 THEN 0 ELSE 1 END,
  [desc]