我使用以下查询:
select a,b,c,d from Table1 where a in ('');
该查询给出了如下输出:
a b c d
1 A 1e@c i-1
2 B #3ht i-2
3 A 1e@c Null
4 C 1e@c
现在我想对那些我有d
为Null或Blank的记录应用IF条件。
我想检查整个数据库,如果我能找到对应于d
值或b
值的任何c
值,并在其他列e中显示。
期望的输出:
a b c d e
1 A 1e@c i-1
2 B #3ht i-2
3 A 1e@c Null i-1
4 C 1e@c i-1
您可以将CASE
表达式与相关子查询一起使用:
SELECT t1.a, t1.b, t1.c, t1.d,
CASE
WHEN t1.d IS NULL OR t1.d = ''
THEN (SELECT t2.d
FROM Table1 AS t2
WHERE t2.c = t1.c LIMIT 1)
END AS e
FROm Table1 AS t1
WHERE t1.a IN (1, 2, 3, 4);
如果您有多个匹配项,可以使用LIMIT 1
随意选择其中一个。否则使用一些谓词来选择所需的匹配记录。
试试这个:
SELECT A, B, C, D, CASE WHEN D IS NULL OR D='' THEN 'i-1' ELSE '' END AS E
FROM YourTable
你可以使用CASE WHEN "Condition" THEN "do this"
。它基本上等同于SQL中的if语句。
你可以使用SELECT IFNULL(d,'1-1') as e
或SELECT IF((d = ''),'1-1','') as e
或SELECT IF((d IS NULL) || (d = ''),'1-1','') as e