SQL连接列是另一个的子集

时间:2016-08-10 18:59:42

标签: sql sql-server

假设有以下表格:

Table A
[Description]
Some Apples are Green
Many Bananas are Yellow
Carrots are Orange

Table B
[Color]
Apples
Bananas
Carrots

我想inner join这些表B.[Color]A.[Description]

的子集

结果将是

[Description]            [Color]
Some Apples are Green    Green
Many Bananas are Yellow  Yellow
Carrots are Orange       Orange

3 个答案:

答案 0 :(得分:1)

Demo Here

这不涉及类似条件

select dataa,b.colorname from #temp t
cross apply
(select  replace(t.dataa,colorname,'') as rplc,colorname
from #colors)b
where dataa<>rplc

答案 1 :(得分:0)

虽然TheGameiswar的解决方案非常酷且效率更高 ....这是针对一小部分数据的另一种更简单的解决方案。

select * from
#A
inner join  #B
on [description] like '%'+color+'%'

答案 2 :(得分:0)

我会选择最简单的解决方案,除非性能可能是个问题:

tsc

注意我认为描述以颜色结束。如果情况并非总是如此,则需要在最后添加另一个%。