2011-02-17 33 views
2

你好我目前有两个不同来源的数据表, 我需要将他们所有的数据组合成一个主表。SQL查询从2个表插入到一个基于名称的数据

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

表B
-Name
-Ranking
-Score

表新
杂牌
-Ranking一个
-Score一个
-Ranking乙
-Score乙

我想借此从表A和B的数据,并将其插入到表新的基于名称。 不知道如何在SQL做到这一点,任何帮助赞赏

+0

是否所有的名称在两个表中存在吗? – 2011-02-17 20:11:54

+0

不,有些只是类似的 – user405516 2011-02-17 20:14:52

回答

6

假设在表A中的每个记录在表B相应的记录:

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 
+0

简单,有效,高效。我喜欢。 – KeithS 2011-02-17 20:10:34

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 
相关问题