MySQL: 获取有行号的有序记录
MySQL: Get ordered records with row number
试图在一个查询中获取带有行号的有序结果,但无法获得预期结果。
问题:
我想将行号分配给有序结果(使用 this link 中找到的逻辑在其他零序列号上)
在执行内部子查询时,我能够得到有序的结果,但是当分配行号时,顺序发生了变化。
所以当我执行整个查询时,它没有给出预期的结果。
SQLFiddle Link:
请找到相同的 sql fiddle。
预期输出:
rownum sequenceno
1 1
2 2
3 3
4 0
5 0
6 0
实际输出:
rownum sequenceno
1 0
2 2
3 0
4 1
5 0
6 3
请帮忙。
在您的查询中,我限制为 6,因为这是您要求的。如果您需要它用于介于两者之间的情况,例如 LIMIT 3,6
用于 id 3 到 9,您可以进一步抵消 id。我还将行计数从子查询移出到顶级查询,因为您需要最终产品的行。
SET @rownum=0;
SELECT rownum, vehDetails.* FROM (
SELECT @rownum:=@rownum + 1 AS rownum, vehDetails.*
FROM (
SELECT
vehname
,vehlastupdated
, vehicle.sequenceno
FROM vehicle
INNER JOIN user ON vehicle.custno = user.custno
WHERE user.userkey = '123456'
AND vehicle.custno = 1
ORDER BY (CASE WHEN vehicle.sequenceno = 0 THEN 1 ELSE 0 END)
,vehicle.sequenceno ASC
) vehDetails
) vehDetails
WHERE vehDetails.rownum BETWEEN 1 AND 6
ORDER BY sequenceno = 0,sequenceno ASC
如果您需要对 rownum 执行更多操作,例如 rownum IN (1,4,10)
,您可以在此处对此查询执行另一个子选择。
试图在一个查询中获取带有行号的有序结果,但无法获得预期结果。
问题:
我想将行号分配给有序结果(使用 this link 中找到的逻辑在其他零序列号上)
在执行内部子查询时,我能够得到有序的结果,但是当分配行号时,顺序发生了变化。
所以当我执行整个查询时,它没有给出预期的结果。
SQLFiddle Link: 请找到相同的 sql fiddle。
预期输出:
rownum sequenceno
1 1
2 2
3 3
4 0
5 0
6 0
实际输出:
rownum sequenceno
1 0
2 2
3 0
4 1
5 0
6 3
请帮忙。
在您的查询中,我限制为 6,因为这是您要求的。如果您需要它用于介于两者之间的情况,例如 LIMIT 3,6
用于 id 3 到 9,您可以进一步抵消 id。我还将行计数从子查询移出到顶级查询,因为您需要最终产品的行。
SET @rownum=0;
SELECT rownum, vehDetails.* FROM (
SELECT @rownum:=@rownum + 1 AS rownum, vehDetails.*
FROM (
SELECT
vehname
,vehlastupdated
, vehicle.sequenceno
FROM vehicle
INNER JOIN user ON vehicle.custno = user.custno
WHERE user.userkey = '123456'
AND vehicle.custno = 1
ORDER BY (CASE WHEN vehicle.sequenceno = 0 THEN 1 ELSE 0 END)
,vehicle.sequenceno ASC
) vehDetails
) vehDetails
WHERE vehDetails.rownum BETWEEN 1 AND 6
ORDER BY sequenceno = 0,sequenceno ASC
如果您需要对 rownum 执行更多操作,例如 rownum IN (1,4,10)
,您可以在此处对此查询执行另一个子选择。