MYSQL:从子查询到哪里

时间:2017-06-05 14:27:45

标签: mysql

我正在尝试执行此查询:

SET @NUMBER:=0;
SELECT *, @NUMBER:=@NUMBER+1 AS NUMBER FROM(
    SELECT * 
    FROM CTBQ 
) AS TB1
WHERE TB1.NUMBER > 1 

但发生此错误:未知列' TB1.NUMBER'在' where子句'

为什么我不能这样做?

任何人都可以帮助我吗?

1 个答案:

答案 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子句的建议查询。