Sql 如果值不存在,请选择空行

Sql 如果值不存在,请选择空行,sql,null,key,exists,Sql,Null,Key,Exists,我有下表: 信息 id | key | msg ------------------- 1 | ABC | text a 2 | CDE | text c 3 | CDE | text d 4 | null | text x 如果我有key=X,我想从表中选择所有值,或者选择带有null的所有值(带有key=null)。大概是这样的: A) 消息(选择…其中key=CDE,key-CDE存在) B) 消息(选择…其中key=XYZ,key XYZ不存在) 您可以使用

我有下表:

信息

id | key   | msg
-------------------
1  | ABC   | text a 
2  | CDE   | text c
3  | CDE   | text d
4  | null  | text x
如果我有
key=X
,我想从表中选择所有值,或者选择带有null的所有值(带有
key=null
)。大概是这样的:

A) 消息(
选择…其中key=CDE
,key-CDE存在)

B) 消息(
选择…其中key=XYZ
,key XYZ不存在)


您可以使用

select t.*
from t
where key = ? or
      (key is null and
       not exists (select 1 from t t2 where t2.key = ?)
      );
查询#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
SELECT * FROM Tbl WHERE Key = 'CDE' OR Key IS NULL
SELECT * FROM Tbl WHERE Key = 'CDE' 
UNION ALL
SELECT * FROM Tbl WHERE Key IS NULL