如果值不存在,则选择空行
Posted
技术标签:
【中文标题】如果值不存在,则选择空行【英文标题】:Select null rows if value not exists 【发布时间】:2019-12-16 12:06:07 【问题描述】:我有下表:
消息
id | key | msg
-------------------
1 | ABC | text a
2 | CDE | text c
3 | CDE | text d
4 | null | text x
如果我有key = X
,我想从表中选择所有值,或者选择所有带有空值的值(使用key = null
)。像这样的:
A) 消息(select ... where key = CDE
,密钥 CDE 存在)
id | key | msg
-------------------
2 | CDE | text c
3 | CDE | text d
B) 消息(select ... where key = XYZ
,键 XYZ 不存在)
id | key | msg
-------------------
4 | null | text x
【问题讨论】:
【参考方案1】:你可以使用or
:
select t.*
from t
where key = ? or
(key is null and
not exists (select 1 from t t2 where t2.key = ?)
);
【讨论】:
【参考方案2】:查询 #1
SELECT * FROM Tbl WHERE Key = 'CDE' OR Key IS NULL
查询 #2
SELECT * FROM Tbl WHERE Key = 'CDE'
UNION ALL
SELECT * FROM Tbl WHERE Key IS NULL
【讨论】:
以上是关于如果值不存在,则选择空行的主要内容,如果未能解决你的问题,请参考以下文章
如果 itemsource 中不存在值,则组合框分配 null