有人可以协助以下查询吗?
我有一个如下表:
Code alias user
-------- ----- -------
7305553 BPP (null)
8136852 BPP AYU
8136852 BPP TKL
7305553 BPFX (null)
8136848 BPFX YAO
11903927 CIX (null)
我想通过传递“ alias”和“ user”值来检索“ Code”值,但是当“ user”不匹配/不存在时,我需要具有空用户的行。 例如:
select Code from my_table where alias = 'BPP' and user = 'TEST'
应返回第一行代码值(7305553),因为用户“ TEST”不存在。是否可以通过某种条件“ where”来实现这种最佳匹配行为? (带有某种案例陈述?)
答案 0 :(得分:2)
尝试一下:
SELECT
CODE
FROM
MY_TABLE
WHERE
ALIAS = 'BPP'
AND (USER = 'TEST' OR USER IS NULL)
ORDER BY USER NULLS LAST
FETCH FIRST ROWS ONLY
干杯!
答案 1 :(得分:0)
在MySQL中尝试CASE:
SELECT
CODE
FROM
MY_TABLE
WHERE
ALIAS = 'BPP'
AND
CASE
WHEN USER != 'TEST' THEN 1=1
ELSE USER = 'TEST'
END;
希望获得帮助。
答案 2 :(得分:0)
如果别名等于“ BPP”并且用户等于“ TEST”,则检索行
或
别名等于“ BPP”,用户为M+T2
,没有别名“ BPP”,用户为“ TEST”
IS NULL