Subqueries With ANY and SOME
Compare a value against any result from a subquery. The ANY (or SOME) operator returns TRUE if the comparison holds for at least one row.
Syntax
SOME is a synonym for ANY.
scalar_expression comparison_operator ANY <Table subquery>
scalar_expression comparison_operator SOME <Table subquery>scalar_expressionmay be any expression that evaluates to a single value.comparison_operatormay be any one of=,>,<,>=,<=,<>or!=.
About IN
Although IN functions similarly to = ANY, it is documented separately due to unique optimization characteristics. Refer to Subqueries with IN and NOT IN for more details.
ANY or SOME returns:
TRUEif the comparison operator returnsTRUEfor at least one row returned by the table subquery.FALSEif the comparison operator returnsFALSEfor all rows returned by the table subquery, or if the table subquery has no rows.NULLif the comparison operator returnsNULLfor at least one row returned by the table subquery and doesn't returnsTRUEfor any of them, or ifscalar_expressionreturnsNULL.
Examples
The subsequent examples use these tables:
CREATE TABLE sq1 (num1 TINYINT);
CREATE TABLE sq2 (num2 TINYINT);
INSERT INTO sq1 VALUES(100);
INSERT INTO sq2 VALUES(40),(50),(120);Subquery With ANY
ANYSELECT * FROM sq1 WHERE num1 > ANY (SELECT * FROM sq2);
+------+
| num1 |
+------+
| 100 |
+------+100 is greater than two of the three values, and so the expression evaluates to true.
Subquery With SOME
SOMESOME is a synonym for ANY.
SELECT * FROM sq1 WHERE num1 > SOME (SELECT * FROM sq2);
+------+
| num1 |
+------+
| 100 |
+------+100 is greater than two of the three values, and so the expression evaluates to true.
See Also
This page is licensed: CC BY-SA / Gnu FDL
Last updated
Was this helpful?

