SQL In子句值

标签 sql oracle

我有以下SQL

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

其中 444 VENDOR 不存在。但是当我运行 SQL 时,我应该从 IN CLAUSE 中获取所有 4 行所有供应商,对于 444,只需填充空白或“X”

我尝试了以下方法,但它不起作用

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

最佳答案

使用 CTE 来保持你的值(value)观,左连接

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

关于SQL In子句值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935004/

相关文章:

mysql - 有什么理由担心表格中的列顺序吗?

MYSQL连接困惑

Oracle 带过滤器的全外连接 (ANSI) 未按预期工作

java - jdbcTemplate.update 用于自动递增和唯一 ID 字段

mysql - 解锁 Oracle 表

mysql - 表上的 (SQL) JOINING 是否始终会创建这些表的笛卡尔积?

mysql - 如何在父表上创建同时约束子表的约束?

MySQL:子句顺序

sql - 除了参数之外,SQL 中的 @ 符号是什么?

mysql - SQL 转换表 -> 将重复属性更改为列