Outdated Version

You are viewing an older version of this section. View current production version.

EXISTS AND NOT EXISTS

Used with a subquery to check if the subquery returns a record.

Syntax

SELECT column-list FROM table WHERE
{ EXISTS | NOT EXISTS }
    ( SELECT column FROM table WHERE condition )

Remarks

  • If the subquery returns any records, EXISTS subquery returns TRUE and NOT EXISTS subquery returns FALSE.
  • If the subquery returns no records, NOT EXISTS subquery returns TRUE and EXISTS subquery returns FALSE.
  • MemSQL supports [NOT] EXISTS with and without correlated queries.

Examples

The following query lists the name of all the employees in the employee table that have a record in the manager table.

SELECT employee.name AS 'Name' FROM employee WHERE EXISTS ( SELECT * FROM manager WHERE employee.name = manager.name );
+---------------+
|      Name     |
+---------------+
| Adam Weaver   |
| Leslie Winkle |
| Chris Palms   |
| Joanna Miles  |
+---------------+

The following query lists all the stock_symbol values in the trade table which do not match the values in the stock field in the company table.

SELECT stock_symbol FROM trade WHERE NOT EXISTS ( SELECT * FROM company WHERE symbol = stock_symbol ) ;
+--------------+
| stock_symbol |
+--------------+
| ZPNM         |
| WQOP         |
+--------------+
2 rows in set (0.62 sec)