2016-07-07 84 views
0

像標題一樣,我想從變量的where子句或select語句中存儲子查詢的值。在一個語句中多次使用子查詢的結果

我得到了這個說法的正常工作:

SELECT a.ticket_id, (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count FROM incidents a WHERE 7 < (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id); 

在兩個語句:

SET @post =1; 
SELECT a.ticket_id,@post FROM incidents a WHERE 5 < @post := (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id); 

或將可能有加入課程的:

SELECT a.ticket_id,count(b.ticket_id) as count FROM incidents a JOIN im_data b ON a.ticket_id=b.ticket_id group by a.ticket_id having count(b.ticket_id) > 5 

的問題是隻是我想知道是否有可能只用一個查詢來做同樣的事情。 我試圖做到這一點在許多方式不使用MySQL:

SELECT a.ticket_id, (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count FROM incidents a WHERE 7 < count 

SELECT a.ticket_id, count FROM incidents a WHERE 7 < (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count; 

SELECT a.ticket_id, count FROM incidents a WHERE 7 < @a (SET @a = (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id); 

正如你也許regonize它是不是完成任務,這是即將獲得知道是否有可能存儲子查詢中的變量或別名在同一個語句中第二次使用它,而沒有多於一條語句,或者有任何其他方式在語句中多次使用值。

格爾茨thentt

+0

您可以使用臨時表作爲子結果。或者您可以使用*內聯視圖*即時創建「臨時表」 - 請參閱https://www.toadworld.com/platforms/mysql/w/wiki/6347.inline-views –

回答

0

我發現它自己研製的同時對計算器的一個問題;-)。

join (select @post := 1) 

有竅門。

SELECT a.ticket_id,@post FROM incidents a JOIN (SELECT @post := 1) b WHERE 5 < @post := (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id); 
相關問題