2017-06-05 140 views
1

我试图做到这一点查询:MYSQL:从子查询与在

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

但这种错误发生:在未知列'TB1.NUMBER“where子句”

为什么不能我这样做?

任何人都可以帮助我吗?

+1

如果在查询中没有排序,我不会看到引入行号的要点。你想在这里做什么? –

+2

WHERE子句中不允许使用列别名。但是看起来你只需要'LIMIT 99999999999999999 OFFSET 1'跳过第一行。 –

+2

你不能在别处使用别名 – scaisEdge

回答

0

TB1子查询中没有NUMBER列。该列在主查询中定义。因此,您需要使用NUMBER而不是TB1.NUMBER。另外,您只能在HAVING子句中使用别名。因此,使用如下因素:

SET @NUMBER:=0; 
SELECT *, @NUMBER:[email protected]+1 AS `NUMBER` 
FROM 
    (SELECT * 
    FROM `measurements` 
) AS TB1 
GROUP BY `NUMBER` 
HAVING `NUMBER`>1; 

注意,有可能使用提出查询,而无需GROUP BY条款。

+0

我会试试这个,谢谢 –