我能够将三个表连接在一起,但我无法找到保存结果表的方法。我正在使用的连接语句是:
SELECT * FROM
Table1
INNER JOIN Table2
ON Table1.id = Table2.id
INNER JOIN Table3
ON Table1.id = Table3.id
我已尝试INSERT INTO,SELECT INTO等,我仍然无法找到将以下查询保存为表格的方法。这一定是可能的,但我无法解决这个问题!
id是所有表的共享标识符。
答案 0 :(得分:1)
您遇到的问题是您无法创建具有相同列名的新表。由于您的表共享一些相同的字段,因此您必须通过别名来重命名它们。
这是一个简单的例子:
select t1.id as t1id, t2.id as t2id, t3.id as t3id into Table4
from Table1 t1
join Table2 t2 on t1.id = t2.id
join Table3 t3 on t1.id = t3.id
这将创建一个新表格Table4
,其中包含3列,t1id
,t2id
和t3id
。此时添加尽可能多的列。
答案 1 :(得分:0)
也许您可以创建存储过程或视图。通过这种方式,您始终可以获得连接语句的结果,而无需每次都重新创建它。
答案 2 :(得分:0)
我要问的第一个问题是你正在使用SELECT *
使用列名,然后如sgeddes所述,确保重命名每一列,可能使用表前缀(t1id,t2id等)。
但是,要警惕你将表连接在一起的方式,id必须存在于两个地方。
运行类似下面的代码,以了解它是如何工作的。
CREATE TABLE #Table1 (id INT, val VARCHAR(50));
CREATE TABLE #Table2 (id INT, val VARCHAR(50));
INSERT INTO #Table1 VALUES (1, 'a');
INSERT INTO #Table1 VALUES (2, 'b');
INSERT INTO #Table2 VALUES (2, 'b');
INSERT INTO #Table2 VALUES (3, 'c');
SELECT t1.id AS t1id, t2.id AS t2id, t1.val AS t1val, t2.val AS t2val
FROM #Table1 t1 INNER JOIN #Table2 t2 ON t1.id = t2.id
答案 3 :(得分:0)
SELECT Table1.*,
Table2.OtherColumn,
Table3.AnotherColumn,
Table3.OneMoreColumn
INTO TablesAsOf_20160215
FROM Table1
INNER JOIN Table2
ON Table1.id = Table2.id
INNER JOIN Table3
ON Table1.id = Table3.id
答案 4 :(得分:-1)
您应该使用程序或功能临时保存所选数据,然后保存到新表中。