mysql-从resultset创建临时表时出错

mysql-从resultset创建临时表时出错,mysql,Mysql,我想从结果集动态创建一个临时表,以便可以对该结果集运行一些查询 以下是我的sql: CREATE TABLE temp_table_1 AS (SELECT * FROM A LEFT OUTER JOIN B ON A.id = B.id WHERE B.id IS null); SELECT QUA.id, QUA.name, QUA.address, QUA.acc, QUA.module, QUA.tag FROM QUA,temp_table_1 WHERE QUA.name =

我想从结果集动态创建一个临时表,以便可以对该结果集运行一些查询

以下是我的sql:

CREATE TABLE temp_table_1 AS (SELECT * FROM A LEFT OUTER JOIN B ON A.id = B.id WHERE B.id IS null);


SELECT QUA.id, QUA.name, QUA.address, QUA.acc, QUA.module, QUA.tag
FROM QUA,temp_table_1
WHERE 
QUA.name = temp_table_1.name AND 
QUA.acc = temp_table_1.acc AND
QUA.tag = temp_table_1.tag
当我运行第一个查询来创建临时表时,我得到错误消息:

'重复列名称'id''


非常感谢您的帮助。

这是因为您选择了。结果集包含两个表中的所有列,因此,如果两个表都有一个名为“id”的列,则将重复该列。

您得到的两个列
a.id
B.id
,没有别名来区分它们。请具体说明您选择的列:

CREATE TABLE temp_table_1 AS (
  SELECT 
    A.id AS aid
    A.othercol AS a_othercol,
    B.id AS bid,
    B.othercol AS b_othercol
  FROM A LEFT OUTER JOIN B ON A.id = B.id WHERE B.id IS null);

使用
SELECT*
是不明智的,因为如果原始
CREATE TABLE
语句中发生了更改,您不能始终保证列返回的顺序。此外,正如您在这里发现的,类似名称的列在许多情况下都会导致问题。

非常感谢您提供这些详细信息