首先,您需要确定
AUDIT_ID
列,必须对它们进行排序,以便正确
row_number
为此,我添加了
ORDER BY AUDIT_ID
在联合部分,那么您正在使用
having
别名子句
行_编号
它将根据您的
行_编号
(即case when…)别名
行_编号
与过滤出小于3的结果的预期结果不同,您需要将整个查询包装在另一个子选择中,如
select * from (your query) t1 where some conditon
SELECT *
FROM (
SELECT
@row_number:=CASE WHEN @audit_id = AUDIT_ID
THEN @row_number
ELSE @row_number+1
END AS row_number,
@audit_id:=AUDIT_ID AS AUDIT_ID
FROM (
SELECT AUDIT_ID FROM AUDIT WHERE <somecondition>
UNION ALL
SELECT AUDIT_ID FROM AUDIT WHERE <somecondition>
ORDER BY AUDIT_ID
) t,
(SELECT @row_number:=0, @audit_id:=0) AS temp
) t1
WHERE row_number >3