【发布时间】:2021-02-17 17:44:44
【问题描述】:
我有一个表(除其他外)有一个“序列号”(VARCHAR(50)) 列和一个“活动”(BOOLEAN) 列...所以数据示例可能如下所示:
serial | active
-------------+-------
ABCD232010E5 | True
ABCD1820102C | False
ABCD1820102C | True
ZYXW06210F20 | True
ABCD402004EZ | False
现在,从外部来源,我得到了一个序列号列表,如下所示:
ABCD232010E5
ZYXW49201X20
ABCD1820102C
ABCD402004EZ
ZYXW012100R3
ABCD44200B1W
是否可以运行一个(理想情况下)查询或一系列查询来获取以下详细信息:
- 序列号是否有
active=True条目? - 如果没有,是否有
active=False条目? - 如果表中根本不存在,请明确列出
我对输出不是很挑剔,只要:
- 我输入的所有连续剧都列出了,无论它们是否存在
- 我输入的每个序列仅列出一次,无论它在表中出现多少次
- 如果表中存在,是否至少有一个条目有
active=True?
类似下面的就可以了(添加了 cmets 来解释我为什么期望给定的输出):
serial | exists | active
-------------+--------+-------
ABCD232010E5 | True | True --has one record with active=True
ZYXW49201X20 | False | False --serial not found in table
ABCD1820102C | True | True --has one record with active=True and 1+ with active=False
ABCD402004EZ | True | False --only has record(s) with active=False
ZYXW012100R3 | False | False --serial not found in table
ABCD44200B1W | False | False --serial not found in table
如果输出只有两列也可以,active=
【问题讨论】:
标签: sql postgresql select