|
PostgreSQL: Advanced SQL: Sub-queries - unknown features?
- Columns from outer queries are accessible in sub-queries
01 CREATE TABLE subscribers (
02 usrid int,
03 address text,
04 primary key(usrid));
05
06 CREATE TABLE expiredsubs (
07 usrid int);
08
09 SELECT usrid,address FROM subscribers
10 EXCEPT SELECT e.usrid,s.address FROM expiredsubs e, subscribers s
11 WHERE e.usrid=s.usrid;
12
13 SELECT usrid, address from subscribers WHERE
14 usrid NOT IN(SELECT usrid FROM expiredsubs);
15
16 SELECT s.usrid, s.address FROM subscribers s WHERE
17 NOT EXISTS(SELECT 1 FROM expiredsubs e WHERE e.id=s.usrid);
- Also available in DELETE & UPDATE
01 DELETE FROM expiredsubs
02 WHERE NOT EXISTS(select 1 FROM subscribers s WHERE
03 s.usrid=expiredsubs.usrid);
- Row-wise comparison
- Simplification of complex (many-to-one) sub-queries
01 CREATE TABLE oldpurchases (
02 prodid int,
03 name text,
04 address text,
05 email text);
06
07 SELECT count(distinct name) FROM oldpurchases WHERE
08 (address,email) IN(SELECT e.address, e.email FROM esubscribers e);
Page 33
|