Sql 返回查询中的行,失败的查找返回NULL

Sql 返回查询中的行,失败的查找返回NULL,sql,vectorwise,Sql,Vectorwise,给定此查询: SELECT a, b FROM c WHERE a IN ('v1', 'v2', 'v3'); 若表c中有v1和v2的值,但并没有v3的值,那个么我将得到一个2行的结果集。是否有一种方法可以在为每个目标获取一行的同时执行相同的查询(或产生相同结果的查询) 在本例中,我希望收到3行,其中2行的值为“v1”和“v2”,另一行的值为NULL。不确定这是否适用于您的特定RDBMS,但我会这样做: select x.a, c.b from ( select 'v1' as a un

给定此查询:

SELECT a, b FROM c WHERE a IN ('v1', 'v2', 'v3');
若表
c
中有v1和v2的值,但并没有v3的值,那个么我将得到一个2行的结果集。是否有一种方法可以在为每个目标获取一行的同时执行相同的查询(或产生相同结果的查询)


在本例中,我希望收到3行,其中2行的值为“v1”和“v2”,另一行的值为NULL。

不确定这是否适用于您的特定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

创建一个临时表,并使用它在所需的表中左键联接。

不确定这是否适用于特定的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
创建一个临时表,并使用它在所需表中左键联接。

为什么不在('v1',…,'N\a')中使用nvl(a,'N\a')?为什么不在('v1',…,'N\a')中使用nvl(a,'N\a')?