我有2个表:batters
和pitchers
我要拉起
playerid(nvarchar50), firstname(nvarchar50), lastname(nvarchar50), bats(nvarchar50)
来自batters
表
和
playerid(nvarchar50), firstname(nvarchar50), lastname(nvarchar50), throws(nvarchar50)
来自pitchers
表
我想合并输出,以便在得到结果时像这样
playerid, firstname, lastname, throws, bats
这可能吗?我猜应该是这样,但是我已经用尽了join和union,无法获得结果集。记住他们是两个不同的表
蝙蝠表
playerID nameFirst nameLast bats
----------------------------------------
abreubo01 Bobby Abreu L
abreujo02 Jose Abreu R
abreuto01 Tony Abreu B
ackledu01 Dustin Ackley L
adamecr01 Cristhian Adames S
adamsla01 Lane Adams R
adamsma01 Matt Adams L
坑表
playerid nameFirst nameLast throws
------------------------------------------
abadfe01 Fernando Abad L
aceveal01 Alfredo Aceves R
achteaj01 A.J. Achter R
adamsau01 Austin Adams R
adamsmi03 Mike Adams R
adcocna01 Nathan Adcock R
affelje01 Jeremy Affeldt L
所需结果
坑表
playerid nameFirst nameLast throws Bats
------------------------------------------------
abadfe01 Fernando Abad
aceveal01 Alfredo Aceves
achteaj01 A.J. Achter
adamsau01 Austin Adams
adamsmi03 Mike Adams
adcocna01 Nathan Adcock
affelje01 Jeremy Affeldt
答案 0 :(得分:0)
假设:
1)您只希望没有任何限制的所有玩家列表
2)相同的玩家ID永远不会出现在两个表中(或者,如果出现,您不在乎他们是否被列出两次)
基于这些假设,您可以简单地编写:
SELECT playerID, nameFirst, nameLast, bats, NULL as throws
FROM bats
UNION ALL
SELECT playerID, nameFirst, nameLast, NULL as bats, throws
FROM pits
但是,我认为您的数据尚未完全标准化。这两个表实际上都是玩家列表,只是属性略有不同。因此,更明智的整体方法是仅使用一个带有列的“玩家”表,如下所示:
playerID, nameFirst, nameLast, bats, throws
如果玩家不执行此操作,则掷球和掷球都将为空。如有必要,您可以添加一个额外的“ player_type”列来表示他们的角色(击球员,投手或同时使用这两者)。
一旦有了该结构,查询就变得很简单:
SELECT playerID, nameFirst, nameLast, bats, throws
FROM players