在MySQL中加入同一个表临时表

时间:2013-09-16 14:51:28

标签: mysql sql join temp-tables

我喜欢在MySQL中加入一个临时表失败,这个想法很简单:

CREATE TEMPORARY TABLE temp_table LIKE any_other_table; -- srsly it does not matter which table

(
  SELECT p1,p2,p3 FROM temp_table WHERE p4 = 1
) UNION (
  SELECT p1,p2,p3 FROM temp_table WHERE p4 = 2
)

非常感谢任何帮助。

编辑:mysql抛出的错误是ERROR 1137 (HY000): Can't reopen table: 'temp_table'

3 个答案:

答案 0 :(得分:6)

您不能在同一查询中多次引用TEMPORARY表。

请阅读以下链接 http://dev.mysql.com/doc/refman/5.5/en/temporary-table-problems.html

答案 1 :(得分:1)

这有用吗?

SELECT p1, p2, p3
FROM temp_table
WHERE p4 in (1, 2);

编写相同的查询是一种更简单的方法。

编辑:

如果“失败”是指“不返回任何行”,那么你就有一个简单的问题。 CREATE TABLE LIKE没有填充表格。它创建一个与any_other_table具有相同结构的表,但没有行。然后,您应该使用insert填充它。或者,仅将create tableselect语句一起使用。

答案 2 :(得分:1)

这应该有效。只需确保您的新表名称与现有名称不同。

CREATE TEMPORARY TABLE new_table

SELECT p1,p2,p3 FROM existing_table WHERE p4 = 1

UNION 

SELECT p1,p2,p3 FROM existing_table WHERE p4 = 2
;