4

我喜欢在 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'

4

3 回答 3

6

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

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

于 2013-09-16T15:04:46.500 回答
1

这行得通吗?

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

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

编辑:

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

于 2013-09-16T14:53:51.850 回答
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
;
于 2013-09-16T14:54:04.517 回答