【问题标题】:insert results of join in SQL server 2005在 SQL Server 2005 中插入连接结果
【发布时间】:2012-07-31 11:25:44
【问题描述】:

我有两个表,每个表超过 800 行。表名是“教育”和“卫生”。列名“ID”在两个表中都很常见。现在我想将这两个表作为完整的外部表加入加入,我想将此表的结果保存为新表。我可以很容易地加入它,但是如何将这些数据保存为新表。请帮助我。

select * into bc  from education e join sanitation s on e.id=s.id

我在每个表中大约有 30 列。因此我无法为新表显式创建表架构。

我想要两个表中的所有列。我有 20 个表,每行 800 行。从这 20 个表中,我想创建一个主表,将“ID”作为主键。

【问题讨论】:

  • 有一个例子here 参见“通过指定来自多个来源的列来创建表”
  • 如果您想避开定义所有列和*,可以使用sys.columns 构造(然后执行)动态查询
  • 谢谢你。请给我一些示例链接。
  • 我想要两个表中的所有列。我有 20 个表,每行 800 行。从这 20 个表中,我想制作一个具有“ID”的主表。

标签: sql-server inner-join full-outer-join


【解决方案1】:

示例代码:

表一:

create table dummy1(
id int , fname varchar(50)
)
insert into dummy1 (id,fname) values (1,'aaa')
insert into dummy1 (id,fname) values (2,'bbb')
insert into dummy1 (id,fname) values (3,'ccc')
insert into dummy1 (id,fname) values (3,'ccc')

表二

create table dummy2(
id int , lname varchar(50)
)
insert into dummy2 (id,lname)  values (1,'abc')
insert into dummy2 (id,lname)  values (2,'pqr')
insert into dummy2 (id,lname)  values (3,'mno')

现在创建新表 3

create table dummy3(
id int , fname varchar(50),lname varchar(50)
)

为表 3 插入查询看起来像

insert into dummy3 (id,fname,lname)
 (select a.id,a.fname,b.lname from dummy1  a inner join dummy2 b on a.id=b.id) 

表 3 将包含 table1、table2 数据

【讨论】:

    【解决方案2】:

    请关注以下内容:

    SELECT  t1.Column1, t2.Columnx
    INTO    DestinationTable
    FROm    education  t1
            INNER JOIN sanitation  t2 ON t1.Id = t2.Id
    

    编辑

    SELECT * 对您不起作用,因为您在两个表中都有一个列 ID。所以上面的解决方案对你有用。

    编辑:

    1-你可以暂时重命名一个表中的Id列,然后试试

    2-  SELECT   *
        INTO    DestinationTable
        FROm    education  t1
                INNER JOIN sanitation  t2 ON t1.Id = t2.Id
    

    3- 将列名恢复为 Id。

    【讨论】:

    • OP 编辑​​了他的问题 - “我在每个表中有大约 30 列。所以我无法为新表显式创建表架构。”
    猜你喜欢
    • 2010-12-15
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多