with recursive (non-linear)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite20052007200920112013201520172019202120233.34.0 - 3.50.03.5.7 - 3.33.02008R2 - 20228.3 - 1711gR1 - 23.98.0.11 - 9.3.05.0 - 5.710.2 - 12.0.25.1 - 10.11.4.191 - 2.3.23210.15.1.3 - 10.17.1.09.7 - 12.1.22.0

Referencing the query_name more than once in the query definition:

WITH RECURSIVE query_name (c) AS (
   VALUES (1)
   UNION
   SELECT x FROM query_name JOIN base_table
                              ON base_table.x = query_name.c
   UNION
   SELECT y FROM query_name JOIN base_table
                              ON base_table.y = query_name.c
)
SELECT *
  FROM query_name

Normative References

The with recursive clause is defined in ISO/IEC 9075-2:2023 §7.17 as part of optional feature T131, “Recursive query” but non-linear recursion is prohibited in ISO/IEC 9075-2:2023 §7.17 SR 3jx.

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