所以我發現了這個偉大的使用:需要一個序列號在MySQL查詢中的每一行
SELECT (@row:[email protected]+1) AS ROW, ID
FROM TableA ,(SELECT @row := 0) r
ORDER BY ID DESC
的@row:[email protected]+1
的偉大工程,但我得到由ID命令行。
我的表看起來更像是這樣的:
SELECT (@row:[email protected]+1) AS ROW, ID , ColA, ColB, ColC
FROM TableA
JOIN TableB on TableB.ID = TableA.ID
JOIN TableC on TableC.ID = TableA.ID
WHERE ID<500
,(SELECT @row := 0) r
ORDER BY ID DESC
注: 我注意到if I remove the JOINs I DO get the requested result
(其中ROW
是連號的每一行的,無論ORDER BY ID的)。第一個例子很好,但是對於某些情況,JOIN會以某種方式搞砸它。
,所以我得到這樣的:
ROW | ID
3 15
2 10
1 2
我是後是:
ROW | ID
1 15
2 10
3 2
這裏的SqlFiddle
所以基本上看來,行號前的評估ORDER BY
發生。排行後我需要ORDER BY
。
我該如何做到這一點?
對不起,我不得不取消你的答案,因爲管理員不允許我問另一個問題。事情是,當JOIN參與時,它會以某種方式混淆結果。所以ID = 2總是得到ROW = 1和ID = 15得到ROW = 3。編輯:在解釋 – Ted
@ted清楚,是從原來的一個你問一個單獨的問題。編輯:請創建一些樣本數據的SQL小提琴 – Taryn
只是在做 – Ted