0

如何对永远不会具有相等值的列进行连接?

有没有办法让我在 [Foo.Column1 = x,y, or z] AND [Bar.Column1 = Q] 上加入 2 个表

我想要来自 2 个不具有相等值的表的查询中的数据,但我知道如果第一个表中的值是它实际上等于的 3 个不同值中的任何一个。

那么我可以加入 2 个表,如果 Foo.Column1 包含一个指定的值并且 Bar.Column1 包含一个单独的特殊值,然后告诉语句要链接 2 行 =?

两个表中没有相同的值。

4

1 回答 1

0

定义两个表中的值之间的映射关系,如下所示:

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 成为子查询来对它们进行硬编码。

于 2013-03-13T16:33:17.710 回答