SQL - 连接关于相同实体的两个表

Posted

技术标签:

【中文标题】SQL - 连接关于相同实体的两个表【英文标题】:SQL - Join Two Tables About The Same Entities 【发布时间】:2011-03-05 01:19:14 【问题描述】:

我创建了两个表,每个表都包含一些关于同一实体的条目。如何编写查询以加入条目并在另一个表中创建统一条目?

抱歉给大家带来了困惑。我应该提供一个简单的例子。

我的两张表如下所示,

表 1:Name, ID, email, city, state, phone 表二:LastName, FirstName, email, gender, ID

【问题讨论】:

“关于同一实体”是什么意思? 也许你可以分享结构、代码,任何东西都会很好,并且肯定会帮助提供答案 嗨 Orbit,很抱歉给您带来了困惑。我应该提供一个简单的例子。表 1(姓名、身份证、电子邮件、城市、州、电话) 表 2(姓、名、电子邮件、性别、身份证) 另外请说明您正在使用的 RDBMS 和版本。 【参考方案1】:

我假设 ID 是链接两个表的主键。此查询从每个表中获取选定的列并将它们插入到表 @U3 中。


declare @U3 Table(ID int, FirstName varchar(50), LastName varchar(50),  
                  city varchar(50), [state] varchar(50), phone varchar(50),
                  email varchar(50), gender varchar(50))

insert @U3
  select u1.ID, u2.FirstName, u2.LastName, u1.email,
         u1.city, u1.state,u1.phone, u2.gender
  from Table1 u1 
    join Table2 u2 on u2.ID=u1.ID

select * from @U3

【讨论】:

【参考方案2】:

类似:

INSERT INTO
    c (machine, address)
(   SELECT
           a.machine, a.address
    FROM
           a
    UNION
    SELECT
           b.machine, b.address
    FROM
           b
);

【讨论】:

【参考方案3】:
INSERT INTO TableC VALUES (SELECT T1.Name,T1.email,T1.city,T1.state,T1.phone,
T2.Lastname,T2.Firstname,T2.gender FROM Table1 T1 
LEFT JOIN Table2 T2 ON T1.ID = T2.ID)

表C应该包含表1和表2的join结果集中的所有字段。除了重复的ID/email

编辑显示所有字段

【讨论】:

以上是关于SQL - 连接关于相同实体的两个表的主要内容,如果未能解决你的问题,请参考以下文章

已经建立了两个表,请问如何用SQL语句建立关联?

union连接的两个表的字段必须完全相同吗?

连接两个表的复杂 SQL 查询

连接查询

连接两个不同表中具有相同 UnitOfMeasureId 的行

如何在 SQL 中通过多列连接两个表?