你好我目前有两个不同来源的数据表, 我需要将他们所有的数据组合成一个主表。SQL查询从2个表插入到一个基于名称的数据
数据库布局:
表A
-Name
-Ranking
-Score
表B
-Name
-Ranking
-Score
表新
杂牌
-Ranking一个
-Score一个
-Ranking乙
-Score乙
我想借此从表A和B的数据,并将其插入到表新的基于名称。 不知道如何在SQL做到这一点,任何帮助赞赏
你好我目前有两个不同来源的数据表, 我需要将他们所有的数据组合成一个主表。SQL查询从2个表插入到一个基于名称的数据
数据库布局:
表A
-Name
-Ranking
-Score
表B
-Name
-Ranking
-Score
表新
杂牌
-Ranking一个
-Score一个
-Ranking乙
-Score乙
我想借此从表A和B的数据,并将其插入到表新的基于名称。 不知道如何在SQL做到这一点,任何帮助赞赏
假设在表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
简单,有效,高效。我喜欢。 – KeithS 2011-02-17 20:10:34
试试这个(应该在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
是否所有的名称在两个表中存在吗? – 2011-02-17 20:11:54
不,有些只是类似的 – user405516 2011-02-17 20:14:52