如何排序結果我有這樣的查詢:從UNION
(select @number:=3)
union
(select @number:=2)
union
(select @number:=1)
order by @number ASC
有了結果:
3
2
1
但我想按升序排列的結果,就像這樣:
1
2
3
如何使用這樣的查詢以升序來實現結果?
如何排序結果我有這樣的查詢:從UNION
(select @number:=3)
union
(select @number:=2)
union
(select @number:=1)
order by @number ASC
有了結果:
3
2
1
但我想按升序排列的結果,就像這樣:
1
2
3
如何使用這樣的查詢以升序來實現結果?
您可以包裝UNION子查詢,試試這個:
SELECT *
FROM(
SELECT @number := 3 AS number
UNION
SELECT @number := 2 AS number
UNION
SELECT @number := 1 AS number) tmp
ORDER BY number;
下面是一個例子SQL Fiddle。
的編輯,解釋發生了什麼:
在你的榜樣,MySQL是治療各組作爲自己的查詢(這是你如何指望工會工作),所以它是如果您有三個不同的查詢,並且只有第三個正在訂購。
因此,通過將聯合查詢放在一起,您有一個結果集,並且整個結果集是正在排序的內容。
這是您的查詢:
(select @number:=3)
union
(select @number:=2)
union
(select @number:=1)
order by @number ASC
你order by
具有恆定。它是order by "1"
- @number
是一個變量,而不是列名。因此,沒有排序。你想要的是指定的號碼作爲列名:
select 3 as number
union all
select 2
union all
select 1
order by number;
您還應該使用union all
代替union
,除非你想刪除重複的額外開銷。
你還在試圖解決這個問題嗎? – AdamMc331
嗨McAdam331對不起,我還沒有回答。我已經使用了你的答案,我的問題解決得很好..非常感謝你的朋友 – Devisy