我正在尝试执行此查询:
SET @NUMBER:=0;
SELECT *, @NUMBER:=@NUMBER+1 AS NUMBER FROM(
SELECT *
FROM CTBQ
) AS TB1
WHERE TB1.NUMBER > 1
但发生此错误:未知列' TB1.NUMBER'在' where子句'
为什么我不能这样做?
任何人都可以帮助我吗?
答案 0 :(得分:0)
NUMBER
子查询中没有TB1
列。该列在主查询中定义。因此,您需要使用NUMBER
代替TB1.NUMBER
。此外,您只能在HAVING
子句中使用别名。因此,请使用下面的内容:
SET @NUMBER:=0;
SELECT *, @NUMBER:=@NUMBER+1 AS `NUMBER`
FROM
(SELECT *
FROM `measurements`
) AS TB1
GROUP BY `NUMBER`
HAVING `NUMBER`>1;
注意,可以使用不带GROUP BY
子句的建议查询。