TABLE
是 MySQL 8.0.19 中引入的 DML 语句,它返回指定表的行和列。
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
该TABLE
语句在某些方面就像SELECT
. 鉴于存在名为 的表t
,以下两个语句产生相同的输出:
TABLE t;
SELECT * FROM t;
TABLE
您可以分别对使用ORDER
BY
和LIMIT
子句
生成的行数进行排序和限制
。这些功能与 with 一起使用时的相同子句相同
SELECT
(包括可选
OFFSET
子句 with LIMIT
),如您在此处所见:
mysql> TABLE t;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 6 | 7 |
| 9 | 5 |
| 10 | -4 |
| 11 | -1 |
| 13 | 3 |
| 14 | 6 |
+----+----+
7 rows in set (0.00 sec)
mysql> TABLE t ORDER BY b;
+----+----+
| a | b |
+----+----+
| 10 | -4 |
| 11 | -1 |
| 1 | 2 |
| 13 | 3 |
| 9 | 5 |
| 14 | 6 |
| 6 | 7 |
+----+----+
7 rows in set (0.00 sec)
mysql> TABLE t LIMIT 3;
+---+---+
| a | b |
+---+---+
| 1 | 2 |
| 6 | 7 |
| 9 | 5 |
+---+---+
3 rows in set (0.00 sec)
mysql> TABLE t ORDER BY b LIMIT 3;
+----+----+
| a | b |
+----+----+
| 10 | -4 |
| 11 | -1 |
| 1 | 2 |
+----+----+
3 rows in set (0.00 sec)
mysql> TABLE t ORDER BY b LIMIT 3 OFFSET 2;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 13 | 3 |
| 9 | 5 |
+----+----+
3 rows in set (0.00 sec)
为了限制返回哪些表列,过滤超出使用ORDER BY
和LIMIT
/或两者可以完成的行,使用
SELECT
。
TABLE
可以与临时表一起使用。
TABLE
也可以用于代替
SELECT
许多其他结构,包括此处列出的结构:
使用
UNION
,如下所示:mysql> TABLE t1; +---+----+ | a | b | +---+----+ | 2 | 10 | | 5 | 3 | | 7 | 8 | +---+----+ 3 rows in set (0.00 sec) mysql> TABLE t2; +---+---+ | a | b | +---+---+ | 1 | 2 | | 3 | 4 | | 6 | 7 | +---+---+ 3 rows in set (0.00 sec) mysql> TABLE t1 UNION TABLE t2; +---+----+ | a | b | +---+----+ | 2 | 10 | | 5 | 3 | | 7 | 8 | | 1 | 2 | | 3 | 4 | | 6 | 7 | +---+----+ 6 rows in set (0.00 sec)
刚才展示的
UNION
相当于下面的语句:mysql> SELECT * FROM t1 UNION SELECT * FROM t2; +---+----+ | a | b | +---+----+ | 2 | 10 | | 5 | 3 | | 7 | 8 | | 1 | 2 | | 3 | 4 | | 6 | 7 | +---+----+ 6 rows in set (0.00 sec)
TABLE
也可以与SELECT
语句、VALUES
语句或两者联合使用。请参阅 第 13.2.10.3 节,“UNION 子句”。使用
INTO
填充用户变量,使用INTO OUTFILE
或INTO DUMPFILE
将表数据写入文件。有关更具体的信息和示例, 请参阅 第 13.2.10.1 节,“SELECT ... INTO 语句” 。在许多情况下,您可以使用子查询。
t1
给定具有名为 的列的 任何表 ,以及 具有单个列a
的第二个表,如下语句是可能的:t2
SELECT * FROM t1 WHERE a IN (TABLE t2);
假设表的单列
t1
名为x
,前面的内容等同于此处显示的每个语句(并且在两种情况下产生完全相同的结果):SELECT * FROM t1 WHERE a IN (SELECT x FROM t2); SELECT * FROM t1 WHERE a IN (SELECT * FROM t2);
有关更多信息,请参阅第 13.2.11 节,“子查询”。
With
INSERT
和REPLACE
语句,否则您将使用SELECT *
. 有关更多信息和示例, 请参阅第 13.2.6.1 节,“INSERT ... SELECT 语句” 。TABLE
在许多情况下也可以用来代替SELECT
inCREATE TABLE ... SELECT
或CREATE VIEW ... SELECT
. 有关更多信息和示例,请参阅这些语句的描述。