ANY/SOME
Syntax:
expression operator ANY (subquery)
expression operator SOME (subquery)
The ANY/SOME operator compares a value to a set of values returned by a subquery.
The right-hand side is a parenthesized subquery, which must return exactly one column.
The left-hand expression is evaluated and compared to each row of the subquery result using the given operator, which must yield a Boolean result.
The result of ANY is “true” if any true result is obtained. The result is “false” if no true result is found (including the special case where the subquery returns no rows).
SOME is a synonym for ANY. IN is equivalent to = ANY.
If there are no successes and at least one right-hand row yields null for the operator’s result, the result of the ANY construct will be null, not false.
We can use any of these operators:
Operator | Description |
---|---|
< | less than |
> | greater than |
<= | less than or equal to |
>= | greater than or equal to |
= | equal |
<> or != | not equal |
Detailed Syntax:
SELECT column(s)
FROM table
WHERE column operator ANY
(SELECT column FROM table WHERE condition);
Postgres ANY Operator Example
I am using the database for all examples. It is available on my Github public repo
SELECT product_name
FROM products
WHERE product_id = ANY (SELECT product_id FROM order_details
WHERE quantity = 10);
//Output
product_name
"Chai"
"Chang"
"Chef Anton's Cajun Seasoning"
"Uncle Bob's Organic Dried Pears"
...
...
60 rows
Another Postgres ANY Operator Example:
SELECT product_name
FROM products
WHERE product_id = ANY (SELECT product_id FROM order_details
WHERE quantity > 99);
//Output
product_name
"Chai"
"Chang"
"Chef Anton's Cajun Seasoning"
"Uncle Bob's Organic Dried Pears"
...
...
20 rows
As, I mentioned earlier, IN is equivalent to = ANY.
So, if we write down above query using IN, we’ll get the same results.
Postgres IN Operator Example:
SELECT product_name
FROM products
WHERE product_id IN (SELECT product_id FROM order_details
WHERE quantity > 99);
//Output
product_name
"Chai"
"Chang"
"Chef Anton's Cajun Seasoning"
"Uncle Bob's Organic Dried Pears"
...
...
20 rows
<> ANY
operator is different from NOT IN
Postgres <> ANY
Operator Example:
SELECT product_name
FROM products
WHERE product_id <> ANY (SELECT product_id FROM order_details
WHERE quantity > 99);
//Output
product_name
"Chai"
"Chang"
"Aniseed Syrup"
...
...
77 rows
Postgres NOT IN
Example:
SELECT product_name
FROM products
WHERE product_id NOT IN (SELECT product_id FROM order_details
WHERE quantity > 99);
//Output
product_name
"Chai"
"Aniseed Syrup"
"Chef Anton's Cajun Seasoning"
...
...
57 rows
ALL
Syntax:
expression operator ALL (subquery);
The right-hand side is a parenthesized subquery, which must return exactly one column.
The left-hand expression is evaluated and compared to each row of the subquery result using the given operator, which must yield a Boolean result.
The result of ALL is “true” if all rows yield true (including the special case where the subquery returns no rows). The result is “false” if any false result is found.
NOT IN is equivalent to <> ALL.
If there are no failures but at least one right-hand row yields null for the operator’s result, the result of the ALL construct will be null, not true.
Detailed Syntax:
SELECT column(s)
FROM table
WHERE column operator ALL
(SELECT column FROM table WHERE condition);
Postgres ALL Operator Example
SELECT product_name
FROM products
WHERE product_id = ALL (SELECT product_id FROM order_details
WHERE quantity = 10);
//Output
product_name
0 rows
Sources
ALL ANY database SOME sql operators sql query