编辑:很抱歉在此之前没有提及 postgres 8.3 实现。
我有一张今天建造的四列表格。
Source_IP, Destination_IP, user_type, ut_bool
该user_type
列不断获得新条目,因此我想将其与历史条目表进行比较,以查看它在相关日期是否是新条目。,可以被认为是主source_ip
键destination_Ip
10.1.1.2, 30.30.30.1, type1, 0
10.1.1.2, 30.30.30.1, type4, 1
10.1.1.2, 30.30.30.4, type5, 0
10.1.1.2, 30.30.30.4, type3, 0
10.1.1.2, 30.30.50.9, type2, 0
10.1.1.4, 30.30.30.4, type4, 0
10.1.1.4, 30.30.30.4, type3, 1
source_ip, destination_ip
如果至少一对旁边有一个 1 ,我无法将 1 返回给给定的一组 ( ) 对的列source_ip,destination_ip, user_type
,例如我想得到
10.1.1.2, 30.30.30.1, 1
10.1.1.2, 30.30.30.4, 0
10.1.1.4, 30.30.30.4, 1
我不确定如何正确使用存在语句。
如何修复以下查询?
select source_ip, destination_ip,
(
select
case when exists
(select true from table
where ut_bool =1)
then '1'
else '0' end
) as ut_new
from
table;
我的查询不断返回,因为我没有正确使用存在语句:
10.1.1.2, 30.30.30.1, 0
10.1.1.2, 30.30.30.4, 0
10.1.1.4, 30.30.30.4, 0