編集:これがpostgres 8.3実装になる前に言及しないで申し訳ありません。
今日作成された 4 つの列のテーブルがあります。
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 がある場合、( ) ペアの特定のグループの列に 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
exists ステートメントを正しく使用する方法がわかりません。
次のクエリを修正するにはどうすればよいですか?
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;
exists ステートメントを正しく使用していないため、クエリが返され続けます。
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