2017-06-05 77 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

我會試試這個,謝謝 –