SQL In子句值

SQL In子句值,sql,oracle,Sql,Oracle,我有以下SQL Select * from PS_VENDOR WHERE VENDOR IN ('111','222','333','444') 其中不存在444个供应商。但是当我运行SQL时,我应该从IN子句中获得所有供应商的所有4行,对于444,只需填充空白或“X” 我尝试了以下方法,但无效 Select * from PS_VENDOR WHERE NVL(VENDOR IN ('111','222','333','444'), 'X'); 使用CTE保存您的值,左键连接

我有以下SQL

Select * 
from PS_VENDOR 
WHERE VENDOR IN ('111','222','333','444') 
其中不存在444个供应商。但是当我运行SQL时,我应该从IN子句中获得所有供应商的所有4行,对于444,只需填充空白或“X”

我尝试了以下方法,但无效

Select * 
from PS_VENDOR 
WHERE NVL(VENDOR IN ('111','222','333','444'), 'X');

使用CTE保存您的值,左键连接

with V1 as
(
select '111' as VV from dual
union all
select '222' as VV from dual
union all
select '333' as VV from dual
union all
select '444' as VV from dual
)

select VV, PS_VENDOR.*

from V1
left join PS_VENDOR 
  on VENDOR = VV

不能选择不存在的值。你必须以某种方式“创造”它。只是为了提醒你。当你提出一个问题并得到一个答案时,如果其中一个是正确的,你应该接受。你也可以投票选出有用的答案。你已经问了7个问题,但没有接受任何回答。这样的政策会阻止其他人回答你进一步的问题。干杯。谢谢你的反馈。我是这个团体的新成员,非常抱歉。你能告诉我怎么接受这个价格吗answers@KumarG若你们打开一个你们贴出来的问题,看看答案,每个答案的分数下面都有小记号。您单击“最佳答案”旁边的o,就这样。当您接受一个选项时,您将通过单击“答案”旁边的向上箭头获得向上投票的权限。看这里:然后你可以使用这个列表:接受前面问题的答案。干杯,非常感谢