mysql-从resultset创建临时表时出错
我想从结果集动态创建一个临时表,以便可以对该结果集运行一些查询 以下是我的sql: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 =
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
语句中发生了更改,您不能始终保证列返回的顺序。此外,正如您在这里发现的,类似名称的列在许多情况下都会导致问题。非常感谢您提供这些详细信息