[not] exists (…)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite2005200720092011201320152017201920212023✓ 3.5.7 - 3.50.0✓ 2008R2 - 2022✓ 8.3 - 17✓ 11gR1 - 23.9✓ 5.0 - 9.4.0✓ 5.1 - 12.0.2✓ 1.4.191 - 2.3.232✓ 10.15.1.3 - 10.17.1.0✓ 10.5 - 12.1.2a⚠ 9.7a⚠ 2.0a
  1. EXISTS subquery is not supported inside join predicate

Exists checks whether or not the result of a subquery is empty.

SELECT *
  FROM customers
 WHERE NOT EXISTS (SELECT *
                     FROM customers.id = orders.customer_id
                  )

The example returns all customers that have not place an order yet—for whom there exists no order. Not exists is also said to be an anti join while exists is a semi join.

The columns selected in the subquery are irrelevant. The asterisk (*) is commonly used and does not mean “all columns” in this context. Exists can be used wherever conditions are allowed: where, having, case when, ….

Normative references

The Exists is defined in ISO/IEC 9075-2:2023 as the mandatory feature E061-08.

You can’t catch up on 20 years of SQL evolution in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up and to keep modern-⁠sql.com on your radar.

About the Author

Photo of Markus Winand

Markus Winand provides insights into SQL and shows how different systems support it at modern-sql.com. Previously he made use-the-index-luke.com, which is still actively maintained. Markus can be hired as trainer, speaker and consultant via winand.at.

Buy the Book

Cover of “SQL Performance Explained”: Squirrel running on grass

The essence of SQL tuning in 200 pages

Buy now!
(paperback and/or PDF)

Paperback also available at Amazon.com.

Hire Markus

Markus offers SQL training and consulting for developers working at companies of all sizes.
Learn more »

Connect with Markus Winand

Subscribe mailinglistsSubscribe the RSS feedMarkus Winand on LinkedInMarkus Winand on XINGMarkus Winand on TwitterMarkus Winand on Bluesky
Copyright 2015-2025 Markus Winand. All righs reserved.
Legal | Contact | NO WARRANTY | Trademarks | Privacy and GDPR