Sql Query用于根据名称将2个表中的数据插入到一个表中

时间:2011-02-17 20:07:46

标签: sql

您好我目前有2个来自不同来源的数据表, 我需要将它们全部合并到一个主表中。

数据库布局
表A
-name
-Ranking
-Score

表B
-name
-Ranking
-Score

表格新
-name
- 放弃A
-Score A
- 翻译B
-Score B

我想从表A和B中获取数据,并根据名称将其插入表New。 不知道如何在sql中执行此操作,任何帮助赞赏

2 个答案:

答案 0 :(得分:6)

假设TableA中的每条记录在TableB中都有相应的记录:

insert into TableNew
    (Name, RankingA, ScoreA, RankingB, ScoreB)
    select a.Name, a.Ranking, a.Score, b.Ranking, b.Score
        from TableA a
            inner join TableB b
                on a.Name = b.Name

如果该假设无效,那么:

insert into TableNew
    (Name, RankingA, ScoreA, RankingB, ScoreB)
    select a.Name, a.Ranking, a.Score, b.Ranking, b.Score
        from TableA a
            left join TableB b
                on a.Name = b.Name
    union all
    select b.Name, a.Ranking, a.Score, b.Ranking, b.Score
        from TableB b
            left join TableA a
                on b.Name = a.Name
        where a.Name is null

答案 1 :(得分:0)

试试这个(应该在Oracle,SQL Server,MySQL中运行): 要创建第三个表(如果它不存在):

CREATE TABLE [TableNew] AS
SELECT  a.Name
                ,a.Ranking RankingA
                ,a.Score ScoreA
                ,b.Ranking RankingB
                ,b.Score ScoreB
  FROM  TableA a, TableB b
 WHERE  a.Name = b.Name

要插入第三个表格(如果存在):

INSERT INTO [TableNew]
SELECT  a.Name
                ,a.Ranking RankingA
                ,a.Score ScoreA
                ,b.Ranking RankingB
                ,b.Score ScoreB
  FROM  TableA a, TableB b
 WHERE  a.Name = b.Name