To create the query for a select where one is NOT in the other

From: Karl Denninger <karl(at)denninger(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: To create the query for a select where one is NOT in the other
Date: 1998-09-19 22:55:14
Message-ID: 19980919175514.A1837@mcs.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I want to specify the following SELECT and can't figure it out:

Table "a" and table "b" have identical schemas

I want to select all the records in "a" in which a key field in "a"
does NOT have a corresponding row in "b".

I know how to do this if I want the opposite, that is, if I want all
the rows in "a" in which the key IS present in "b" this works:

select a.field1, a.field2 from t1 a, t2 b where a.field1 = b.field1;

However, the intuitive modification of this (change "=" to "<>") produces
a monster result in which each row in "a" other than the one which matches
gets output for each instance of "b" (which if you think about it does
make sense).

How do I structure an SQL statement to get the desired rows returned?

--
--
Karl Denninger (karl(at)denninger(dot)net)

"Yes, the president should resign. He has lied to the American people,
time and time again, and betrayed their trust. Since he has
admitted guilt, there is no reason to put the American people through
an impeachment. He will serve absolutely no purpose in finishing out
his term, the only possible solution is for the president to save
some dignity and resign."
________________________________________________________________________

12th Congressional District Hopeful William Jefferson Clinton,
during the Nixon investigations

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Eric McKeown 1998-09-20 23:23:05 Re: [SQL] To create the query for a select where one is NOT in the other
Previous Message Leslie Mikesell 1998-09-19 22:48:50 Re: [SQL] How to Make Case InSensitive???