我正在嘗試爲Microsoft SQL Server 2008編寫一個SQL查詢。下面是我的查詢的一個快速示例。SQL排序按列表
SELECT DISTINCT(field1)
FROM myDatabase
WHERE field1 IN ('dynamic list of ids')
OR ....lots of other conditions....
然後我想要通過動態列表中的那些ID降序,然後其餘的降序。對此有所影響。
ORDER BY field1 IN ('dynamic list of ids') DESC,
field1 DESC
我怎樣才能在動態列表中的第一個ID?
感謝
編輯 - 增加DISTINCT查詢。
編輯 - 由Shan Plourde提供的答案。
SELECT DISTINCT(field1),
CASE
WHEN field1 IN ('dynamic list of ids') THEN 1
ELSE 0
END AS logicalOrderingColumn
FROM myDatabase
WHERE field1 IN ('dynamic list of ids')
OR ....lots of other conditions....
ORDER BY logicalOrderingColumn DESC, field1 DESC
現在它顯示此錯誤「如果指定了SELECT DISTINCT,ORDER BY項目必須出現在選擇列表中。」 – 2011-03-09 05:26:52
您必須在您的select語句中將該case表達式作爲列加入。 Ie:select *,case(''動態列表中的id')中的change_request_id時,則爲0 else 1 end,change_request_id desc as orderinglogiccolumn – 2011-03-09 05:30:29
非常感謝 – 2011-03-09 05:50:24