Beginning in MariaDB 10.4, you can control the ordering of execution on table operations using parentheses.
( expression ) [ORDER BY [column[, column...]]] [LIMIT {[offset,] row_count | row_count OFFSET offset}]
Using parentheses in your SQL allows you to control the order of execution for SELECT
statements and Table Value Constructor, including UNION
, EXCEPT
, and INTERSECT
operations. MariaDB executes the parenthetical expression before the rest of the statement. You can then use ORDER BY
and LIMIT
clauses the further organize the result-set.
Note: In practice, the Optimizer may rearrange the exact order in which MariaDB executes different parts of the statement. When it calculates the result-set, however, it returns values as though the parenthetical expression were executed first.
CREATE TABLE test.t1 (num INT); INSERT INTO test.t1 VALUES (1),(2),(3); (SELECT * FROM test.t1 UNION VALUES (10)) INTERSECT VALUES (1),(3),(10),(11); +------+ | num | +------+ | 1 | | 3 | | 10 | +------+ ((SELECT * FROM test.t1 UNION VALUES (10)) INTERSECT VALUES (1),(3),(10),(11)) ORDER BY 1 DESC; +------+ | num | +------+ | 10 | | 3 | | 1 | +------+
© 2019 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/precedence-control-in-table-operations/