嗨我有两个选择查询,我想将它们合并到一个有5列的表中 Id, ClientId, Height, EyeColor, HairColor
查询是:
SELECT ClientCharacteristic.Id
, ClientCharacteristic.ClientId
, ClientCharacteristic.Height
, GeneralLookup.LookupItem as EyeColor
FROM dbo.ClientCharacteristic
INNER JOIN dbo.GeneralLookup
ON GeneralLookup.Id=ClientCharacteristic.glEyeColorId
SELECT ClientCharacteristic.Id
, ClientCharacteristic.ClientId
, ClientCharacteristic.Height
, GeneralLookup.LookupItem as HairColor
FROM dbo.ClientCharacteristic
INNER JOIN dbo.GeneralLookup
ON GeneralLookup.Id=ClientCharacteristic.glHairColorId
Run Code Online (Sandbox Code Playgroud)
通常,您使用UNION"合并"查询. 但是,在这种特殊情况下,会导致单个列包含两个EyeColor并且包含HairColor其他重复行. 我怀疑那是你想要的.更好的方法可能是为您的联接表添加别名,以便您可以将其加入两次:
SELECT
ClientCharacteristic.Id,
ClientCharacteristic.ClientId,
ClientCharacteristic.Height,
EyeLookup.LookupItem as EyeColor,
HairLookup.LookupItem as HairColor
FROM
dbo.ClientCharacteristic
INNER JOIN dbo.GeneralLookup AS EyeLookup
ON EyeLookup.Id=ClientCharacteristic.glEyeColorId
INNER JOIN dbo.GeneralLookup AS HairLookup
ON HairLookup.Id=ClientCharacteristic.glHairColorId
Run Code Online (Sandbox Code Playgroud)
这里要注意的关键是AS子句中的INNER JOIN子句,它为连接表的别名,以便查询的其余部分.这允许您在不同的键上多次连接同一个表,以便可以为不同的目的引用它.
union或者union all应该这样做,只要列排列并且是相同的类型(或可以隐式转换)
遵循Davids建议并重新阅读5列的问题
SELECT ClientCharacteristic.Id,
ClientCharacteristic.ClientId,
ClientCharacteristic.Height,
Eye.LookupItem as EyeColor
Hair.LookupItem AS HairColor
FROM
dbo.ClientCharacteristic
INNER JOIN
dbo.GeneralLookup Eye
ON Eye.Id=ClientCharacteristic.glEyeColorId
INNER JOIN
dbo.GeneralLookup Hair
ON Hair.Id=ClientCharacteristic.glHairColorId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |