In a recent labs
release a new feature was introduced by Oracle, or actually
two very related new features were introduced. The first new
feature is Common Table Expressions (CTEs), which is also known
WITH. The second feature is recursive CTEs, also
An example of
WITH non_root_users AS (SELECT User, Host FROM mysql.user WHERE User<>'root')
SELECT Host FROM non_root_users WHERE User = ?
The non-CTE equivalent is this:
SELECT Host FROM
(SELECT User, Host FROM mysql.user WHERE User<>'root') non_root_users
WHERE User = ?
This makes it easier to understand the query, especially if there are many subqueries.
Besides using regular subqueries or CTEs you could also put the subquery in a view, but this requires more …[Read more]