保存连接语句的结果? SQL

时间:2016-02-15 20:40:40

标签: sql tsql

我能够将三个表连接在一起,但我无法找到保存结果表的方法。我正在使用的连接语句是:

SELECT * FROM
Table1
INNER JOIN Table2
ON Table1.id = Table2.id
INNER JOIN Table3
ON Table1.id = Table3.id

我已尝试INSERT INTO,SELECT INTO等,我仍然无法找到将以下查询保存为表格的方法。这一定是可能的,但我无法解决这个问题!

id是所有表的共享标识符。

5 个答案:

答案 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列,t1idt2idt3id。此时添加尽可能多的列。

答案 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)

您应该使用程序或功能临时保存所选数据,然后保存到新表中。