如何参考一个table有重复的参考值和不同的状态
How consult a table with repeated reference value and different status
我有一个 table,它有两个条目用于相同的主机名和两个不同的状态,例如:
- Host_X 出现状态为
PRODUCTION
和 POSTPRODUCTION
但是我的查询必须具有以下逻辑:
- 搜索所有主机名而不考虑状态
- Select 仅包含 1 个条目的主机名
POSTPRODUCTION
我试过类似的方法:
AND (STATUS = 'POSTPRODUCTION' AND STATUS <> 'PRODUCTION')
但是结果没有成功,下面是这个table咨询的例子:
SELECT
HOSTNAME
FROM
CI
WHERE
STATUS = 'PRODUCTION'
如果我没理解错的话,你可以使用一个window函数来计算每个主机的行数:
select t.*
from (select t.*,
count(*) over (partition by HOSTNAME) as cnt
from ci t
) t;
那么第二个条件是:
where cnt = 1 and status = 'POSTPRODUCTION'
我有一个 table,它有两个条目用于相同的主机名和两个不同的状态,例如:
- Host_X 出现状态为
PRODUCTION
和POSTPRODUCTION
但是我的查询必须具有以下逻辑:
- 搜索所有主机名而不考虑状态
- Select 仅包含 1 个条目的主机名
POSTPRODUCTION
我试过类似的方法:
AND (STATUS = 'POSTPRODUCTION' AND STATUS <> 'PRODUCTION')
但是结果没有成功,下面是这个table咨询的例子:
SELECT
HOSTNAME
FROM
CI
WHERE
STATUS = 'PRODUCTION'
如果我没理解错的话,你可以使用一个window函数来计算每个主机的行数:
select t.*
from (select t.*,
count(*) over (partition by HOSTNAME) as cnt
from ci t
) t;
那么第二个条件是:
where cnt = 1 and status = 'POSTPRODUCTION'