2013-04-04 62 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