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