如果值不存在,则选择空行

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

【讨论】:

以上是关于如果值不存在,则选择空行的主要内容,如果未能解决你的问题,请参考以下文章

如果值不存在,则插入连接表

request接收不存在的参数会是啥结果

如果 itemsource 中不存在值,则组合框分配 null

xlrd读取数据时判断空行

如果存在则选择公司 2 的值,如果不存在则选择公司 1 的值

t-sql 如果记录存在则选择一列,如果不存在则选择不同的列