所以我发现了这个伟大的使用:需要一个序列号在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