2013-12-20 84 views
1

我試圖創建一個臨時表,填充從兩個查詢返回的數據。以下是我試過使用從兩個查詢返回的數據填充tmp表

CREATE TEMPORARY TABLE IF NOT EXISTS tmp AS (
SELECT * FROM (`users`) WHERE `v1` = 1 
UNION 
SELECT * FROM (`users`) WHERE `v2` = 1 
) 
select * from tmp; 

這裏是我所得到的結果

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION 
+1

'WHERE 1 IN(v1,v2)'OR'WHERE v1 = 1 or v2 = 1'? – Aquillo

+0

太棒了! WHERE 1 IN(v1,v2)是我一直在尋找的 – moemoe

+0

不客氣。雖然它只解決了這個問題(因此是評論而不是答案)。可能有需要工會的情況。 – Aquillo

回答

2

試試這個

CREATE TEMPORARY TABLE IF NOT EXISTS tmp AS 
SELECT * FROM (`users`) WHERE `v1` = 1 
UNION 
SELECT * FROM (`users`) WHERE `v2` = 1 
; 
select * from tmp; 

請參考http://www.sqlfiddle.com/#!2/1302a7/1示範

+0

你的建議不會給出錯誤,但tmp表爲空 – moemoe

+0

@moemoe *但tmp表爲空*這是因爲很可能你的'tmp'表已經存在。先放下,然後再試一次。它應該按預期工作。 – peterm

0

這將工作。請嘗試。這只是語法。請相應地更新您的查詢。

create temporary table tmp 
select * from 
(
    (select * from users) 
    UNION 
    (select * from users) 
) bt; 

SELECT * FROM tmp; 
相關問題