You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Jack Klebanoff <kl...@Mutagen.Net> on 2004/11/29 23:51:26 UTC

Intersect

I plan on working on the INTERSECT operator in Derby.

It is a table operator, syntactically like UNION, e.g.
select a,b from t1 INTERSECT select d,e from t2
Like UNION, it requires that the two source tables have compatible 
columns. It returns the rows that are in both the source tables.

By default duplicates are removed. If  "INTERSECT ALL" is specified then 
duplicates are not removed. In that case if row R occurs m times in one 
source table and n times in the other then row R will appear min(m,n) 
times in the result. (This is specified by the SQL standard).

The full syntax is:
  <nonJoinQueryTerm> ::= <nonJoinQueryPrimary> INTERSECT [ALL] 
<nonJoinQueryPrimary>
According to the SQL standard, the INTERSECT operator takes precedence 
over the UNION operator. Thus
  query1 INTERSECT query2 UNION query3
is equivalent to
  (query1 INTERSECT query2) UNION query3

The INTERSECT operator is supported in DB2, Oracle, and Postgres.

Comments? Objections?

Jack Klebanoff