Nan Ye <nan.ye-nwzjn9QkdiXhIMfW0+CuwW/[EMAIL PROTECTED]> wrote:
If I used UNION and INTERSECT in compound SELECTs, how to change
the
default priority?
For example,
SELECT id FROM sample_a WHERE value > 3.0 INTERSECT SELECT id
FROM sample_b WHERE value < 4.0 UNION SELECT id FROM sample_b WHERE
value > 7.0;
The default results is that it makes the intersection firstly and
then makes the union. If I want the union occurs before the
intersection, what should I do?
Why, put the UNION first, of course:
SELECT id FROM sample_b WHERE value < 4.0
UNION
SELECT id FROM sample_b WHERE value > 7.0
INTERSECT
SELECT id FROM sample_a WHERE value > 3.0;
Or, if you want explicit grouping, you can do this:
SELECT id FROM sample_a WHERE value > 3.0
INTERSECT
select * from (
SELECT id FROM sample_b WHERE value < 4.0
UNION
SELECT id FROM sample_b WHERE value > 7.0
);
In this particular case, you don't even need the UNION:
SELECT id FROM sample_a WHERE value > 3.0
INTERSECT
SELECT id FROM sample_b WHERE value < 4.0 OR value > 7.0;
Igor Tandetnik
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------