如何对永远不会具有相等值的列进行连接?
有没有办法让我在 [Foo.Column1 = x,y, or z] AND [Bar.Column1 = Q] 上加入 2 个表
我想要来自 2 个不具有相等值的表的查询中的数据,但我知道如果第一个表中的值是它实际上等于的 3 个不同值中的任何一个。
那么我可以加入 2 个表,如果 Foo.Column1 包含一个指定的值并且 Bar.Column1 包含一个单独的特殊值,然后告诉语句要链接 2 行 =?
两个表中没有相同的值。
定义两个表中的值之间的映射关系,如下所示:
select *
from Foo
join (
select * from ( values
('A', 'Z'),
('B', 'Z'),
('C', 'Z'),
) MapTable(FooColumn,BarColumn)
) MapTable on MapTable.FooColumn = Foo.Column1
join Bar on Bar.Column1 = MapTable.BarColumn
如果 MapTable 中的行数很小且是静态的,您甚至可以通过使 MapTable 成为子查询来对它们进行硬编码。