我有两个表,我需要一个表中的某些数据,然后需要连接另一个表。但是,联接表仅需要1列,但我需要根据表中的信息类型在2个不同的列中将其返回。
例如:
表1
Key ID
123 1
789 2
表2
Key Type Name
123 R Red
123 B Blue
789 R Black
789 D DULL
表3(我要返回的结果)
Key Type R Type B
123 Red Blue
789 Black
类型R和类型B可能不止于此,因此我需要确保仅返回该信息,并将该信息明确地放在表3的相关列中。
答案 0 :(得分:1)
一种方法是join
:
select t1.*, t2r.name as r_name, t2b.name as b_name
from table1 t1 left join
table2 t2r
on t2r.key = t1.key and t2r.type = 'R' left join
table2 t2b
on t2b.key = t1.key and t2b.type = 'B';
这是标准SQL,在MySQL和SQL Server中都是相同的。
答案 1 :(得分:0)
另一个选择是PIVOT
示例
Select *
From (
Select [Key]
,Item=concat('Type ',[Type])
,Value=[Name]
From YourTable
Where [Type] in ('R','B')
) src
Pivot (max(value) for Item in ([Type R],[Type B]) ) pvt
返回
Key Type R Type B
123 Red Blue
789 Black NULL