問題: 在MY_TABLE一行包含SQL重排排順序
1
2
3
3
4
4
4
我要重新排列的行順序以下
4
4
4
1
3
3
2
有什麼辦法,我可以執行嗎?
到目前爲止我還沒有寫任何代碼。 (我不知道如何開始)
問題: 在MY_TABLE一行包含SQL重排排順序
1
2
3
3
4
4
4
我要重新排列的行順序以下
4
4
4
1
3
3
2
有什麼辦法,我可以執行嗎?
到目前爲止我還沒有寫任何代碼。 (我不知道如何開始)
只需在ORDER BY
中使用CASE
- 它更清晰易讀。
...
ORDER BY CASE WHEN YourColumn = 4 then 0
WHEN YourColumn = 2 then 1
ELSE 2 END, yourcolumn
這也是一個壞主意改變行的順序,因爲實際上存在SQL沒有內在的秩序 - 這一切都在表示層,所以用在你的SELECT
小號ORDER BY
來完成它。
SELECT yourColumn
FROM
(
SELECT yourColumn
, CASE yourColumn
WHEN 4 THEN 1
WHEN 1 THEN 2
WHEN 3 THEN 3
WHEN 2 THEN 4
END AS SortColumn
FROM yourTable
) AS t
ORDER BY t.SortColumn ASC
這將排序4,1,3,2
亞當溫格說,
,或者如果你願意,它可以在完成你的表,這意味着你的SQL語句可以繼續作爲一個基本的SELECT * FROM表ORDER BY newcolumn *
見下面
add a new column
update each row set column=1 where original_column=4
update each row set column=2 where original_column=2
update each row set column=3 where original_column=1
update each row set column=4 where original_column=3
,然後按這個新列排序。
與原始值和相應的排序順序創建一個查找表:
SortLookupTable:
OriginalValue, SortOrder
1, 2
2, 4
3, 3
4, 1
然後將表與原來的表
SELECT T.*
FROM
MyTable T
INNER JOIN SortLookupTable S
ON T.Value = S.OriginalValue
ORDER BY
S.SortOrder;
尼斯。但是,你是否也需要陷入2(在CASE中)呢? – Aaron
它給了我以下錯誤:消息4145,級別15,狀態1,行7 在'THEN'附近預期條件的上下文中指定的非布爾類型表達式。 – Ish
排序asc不會去,因爲你看到2是最後一個desc從3。 – Maess