MySQL 8.4 Release Notes
15.2.3 DO 语句
DO expr [, expr] ...
DO 执行表达式,但不返回任何结果。在大多数方面,DO 等同于 SELECT ,但在不关心结果时速度更快。expr, ...
DO 主要用于具有副作用的函数,如RELEASE_LOCK()。
示例:这个 SELECT 语句暂停,但也生产结果集:
mysql> SELECT SLEEP(5);
+----------+
| SLEEP(5) |
+----------+
| 0 |
+----------+
1 row in set (5.02 sec)
DO 反之暂停,不生产结果集。
mysql> DO SLEEP(5);
Query OK, 0 rows affected (4.99 sec)
这可能在存储函数或触发器中很有用,例如禁止生产结果集的语句。
DO 只执行表达式。它不能在所有使用 SELECT 可以使用的场景下使用。例如,DO id FROM t1 无效,因为它引用了表。