簡體   English   中英

MS SQL特定排序

[英]MS SQL specific ordering

我的英語不會幫助解釋我的問題,但我會嘗試。

假設我們有一個帶有(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 

親切的問候康斯坦丁諾斯

添加一個order by case為第一個參數的order by ,在其中您要創建的值首先是您想要的記錄的0,其他記錄的值是1。 之后,您可以添加更多參數以用於如何對剩余記錄進行排序,例如在description上:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM