SELECT 行,如果某个字段不为空。否则,select 行改为空字段
SELECT row if certain field is NOT null. Else, select row with null field instead
我很难解决我的 sql 问题。如果某个字段(LOOKUP)不为空,则想 select 一行。否则,获取带有空字段的行。请参阅下面的 table:
(PAYCODE 必须是唯一的)
PAYCODE
LOOKUP
ACCOUNT
201
null
720001
201
659057
999999
202
null
720002
输出必须是:
PAYCODE
LOOKUP
ACCOUNT
201
659057
999999
202
null
720002
这看起来很简单,但我是 sql 的新手,我花了 2 天时间解决这个问题,同时寻找解决方案,但运气不好。
您可以尝试以下逻辑:
SELECT *
FROM yourTable t1
WHERE LOOKUP IS NOT NULL OR
NOT EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.PAYCODE = t1.PAYCODE AND
t2.LOOKUP IS NOT NULL);
此逻辑保留 LOOKUP
不为空的任何记录或不存在具有相同 PAYCODE
.
的非空记录的任何记录
我很难解决我的 sql 问题。如果某个字段(LOOKUP)不为空,则想 select 一行。否则,获取带有空字段的行。请参阅下面的 table: (PAYCODE 必须是唯一的)
PAYCODE | LOOKUP | ACCOUNT |
---|---|---|
201 | null | 720001 |
201 | 659057 | 999999 |
202 | null | 720002 |
输出必须是:
PAYCODE | LOOKUP | ACCOUNT |
---|---|---|
201 | 659057 | 999999 |
202 | null | 720002 |
这看起来很简单,但我是 sql 的新手,我花了 2 天时间解决这个问题,同时寻找解决方案,但运气不好。
您可以尝试以下逻辑:
SELECT *
FROM yourTable t1
WHERE LOOKUP IS NOT NULL OR
NOT EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.PAYCODE = t1.PAYCODE AND
t2.LOOKUP IS NOT NULL);
此逻辑保留 LOOKUP
不为空的任何记录或不存在具有相同 PAYCODE
.