2013-04-04 61 views
1

簡而言之,加入,如果臨時表存在

我如何創建我的臨時表

CREATE TEMPORARY TABLE _tmp_table SELECT * FROM db1; 

然後,

# if tmp_table does exist 
SELECT db2.*, _tmp_table.* FROM 'db2' LEFT OUTER JOIN _tmp_table ON _tmp_table.key = db2.id; 
# if tmp_table does NOT exist 
SELECT db2.* FROM db2; 

我怎樣才能讓只有一個查詢對付我的臨時表中的現有或不?

Env:Mysql 5.5.15

+0

爲什麼不每次都創建臨時表。如果你沒有放入任何東西,左連接仍然會返回'db2。*'的所有行。 – Barmar 2013-04-04 06:29:21

+0

@Barmar會不會對性能造成不良影響? – oldergod 2013-04-04 06:43:41

+0

我不這麼認爲 - 它不應該花費太多精力來告訴它它正在與一張空桌子結合。 – Barmar 2013-04-04 06:45:34

回答

0

你不能在一個聲明中做到這一點。

您需要確保您加入的表已存在,否則您將收到異常。我寧願創建一個用於檢查表存在的存儲過程。

+0

我無法找到一種方法來檢查表的存在,當表是暫時的。 – oldergod 2013-04-04 06:43:17