在子查询中隐藏 ROW_NUMBER()
Hide ROW_NUMBER() in subquery
我有一个查询
Select *
From y
WHERE y.z = (
SELECT a, (adding rownumber here)
FROM b
)
我想添加一个子句,其中每行仅 selects。为此,我需要将 row_number() 添加到子查询,并有一个子句 where rownumber % 2 = 0.
我的问题是,我能否将 rownumber 添加到子查询的 select 并以某种方式隐藏它以使其不影响查询
MySQL 中的行号是众所周知的颈椎病。
您可以像这样在 MySQL 中对行编号。
SELECT (@rownum := @rownum+1) rownum, b.*
FROM b
JOIN (SELECT @rownum := 0) init
ORDER BY b.whatever
不要忘记这里的 ORDER BY
子句。如果没有显式排序,查询引擎可以随意随机化行的顺序 returns。
然后,您可以将该混乱用作子查询并使用 rownum
.
执行操作
SELECT *
FROM (
SELECT (@rownum := @rownum+1) rownum, b.*
FROM b
JOIN (SELECT @rownum := 0) init
ORDER BY b.whatever
) table_with_rownum
WHERE rownum % 2 = 0
如果您不想显示行号,请将 SELECT
从 SELECT *
更改为 SELECT col, col, col
并省略 rownum
.
我有一个查询
Select *
From y
WHERE y.z = (
SELECT a, (adding rownumber here)
FROM b
)
我想添加一个子句,其中每行仅 selects。为此,我需要将 row_number() 添加到子查询,并有一个子句 where rownumber % 2 = 0.
我的问题是,我能否将 rownumber 添加到子查询的 select 并以某种方式隐藏它以使其不影响查询
MySQL 中的行号是众所周知的颈椎病。
您可以像这样在 MySQL 中对行编号。
SELECT (@rownum := @rownum+1) rownum, b.*
FROM b
JOIN (SELECT @rownum := 0) init
ORDER BY b.whatever
不要忘记这里的 ORDER BY
子句。如果没有显式排序,查询引擎可以随意随机化行的顺序 returns。
然后,您可以将该混乱用作子查询并使用 rownum
.
SELECT *
FROM (
SELECT (@rownum := @rownum+1) rownum, b.*
FROM b
JOIN (SELECT @rownum := 0) init
ORDER BY b.whatever
) table_with_rownum
WHERE rownum % 2 = 0
如果您不想显示行号,请将 SELECT
从 SELECT *
更改为 SELECT col, col, col
并省略 rownum
.