我想在 SQL Server 中對這個查詢的結果進行排序:
SELECT *
FROM t1
WHERE t1.my_field_name IN ('val1', 'val2', 'val3');
...以便我按照與 IN 串列值相同的順序對結果進行排序。
在 mySQL 中,這可以輕松完成:
SELECT *
FROM t1
WHERE my_field_name IN ('val1', 'val2', 'val3')
ORDER BY FIELD(my_field_name, 'val1', 'val2', 'val3');
...但我不知道如何在 SQL Server 中做到這一點。有什么建議嗎?
uj5u.com熱心網友回復:
使用這樣的 case 陳述句:
ORDER BY
CASE field
WHEN 'val1' THEN 1
WHEN 'val2' THEN 2
WHEN 'val3' THEN 3
END, my_field_name
uj5u.com熱心網友回復:
最簡單的方法是加入一個VALUES虛擬表,以及一個排序依據:
SELECT
t1.*
FROM t1
JOIN (VALUES
('val1', 1),
('val2', 2),
('val3', 3)
) v(value, ord) ON t1.my_field_name = v.value
ORDER BY
v.ord;
如果有重復的values(例如,如果您傳入引數),您需要先聚合它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/361405.html
標籤:sql sql-server
上一篇:如何用兩個外鍵創建一個復合鍵
