连接 2 个表,匹配两个表中的 2 列

Join 2 tables with match of 2 columns from two tables

我有 2 tables :

TransferPointType
--------------------------------------------------
[Player(int)] [ID(int)] [Type(tinyint)] [Level(int)] [Before(money)] [Now(money)] [After(money)]
X 
X
X

[Transfer]
--------------------------------------------------
[Player(int)] [ID(int)] [Type(tinyint)] [Amount(money)] [Created(datetime)] [Description(nvarchar256)]

结果 table 应该是这样的

        [Player] [ID]                 [Level] [Before] [Now] [After] [Created] [Description]
--[Transfer] = TransferPointType--

和条件

match between TransferPointType.player=[Transfer].player, TransferPointType.ID=[Transfer].ID
according to this match add others columns [Type] [Level] [Before] [Now] [After] from TransferPointType
and columns - [Created] [Description] from [Transfer]
-----------------------------------------------------------------------
where player=1111 and ID IN (1111,xxxx,xxx,xx,xx,xxx)

我考虑左连接或联合,但我无法写出合理的连接。如果我尝试优化列数的 UNION,我会到达 sql 服务器显示错误的地步:算术溢出错误 -datetime。所以,我尝试用(示例)select CONVERT(datetime, cast(20140806 as char(8)) ) 转换它,但也没有成功。

也许我想的比较复杂,可以简单地写成select ...

试试这个:

select a.type, a.level, a.before, a.now, a.after, b.created, b.description
from TransferPointType a
join Transfer b on a.player = b.player and a.ID = b.ID
where a.player = 1111
and a.ID IN (1111,xxxx,xxx,xx,xx,xxx);

如果您希望 TransferPointType 具有不在 Transfer table 中的 ID,则在连接语句前添加“left”。