0

鉴于此查询:

SELECT a, b FROM c WHERE a IN ('v1', 'v2', 'v3');

如果表c有 v1 和 v2 的值但没有 v3,我会得到 2 行的结果集。有没有一种方法可以在为每个目标获取一行的同时执行相同的查询(或产生相同结果的查询)?

在这种情况下,我想接收 3 行,2 行带有“v1”和“v2”的值,1 行带有 NULL。

4

1 回答 1

3

不确定这是否适用于您的特定 RDBMS,但这是我将如何处理它:

select x.a, c.b
from (
  select 'v1' as a union all
  select 'v2' as a union all
  select 'v3' as a
) x
left outer join c on c.a = x.a

创建一个临时表并使用它左连接所需的表。

于 2012-10-25T18:52:36.580 回答