TABLE语句
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子句来排序和限制产生的行数。与一起使用时,这些功能与相同的子句相同SELECT(包括带有的可选OFFSET子句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 tORDER 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 tLIMIT 3; +--- +--- + | a | b | +--- +--- + | 1 | 2 | | 6 | 7 | | 9 | 5 | +--- +--- + 3 rows in set (0.00 sec) mysql>TABLE tORDER BY bLIMIT 3; +---- +---- + | a | b | +---- +---- + | 10 | -4 | | 11 | -1 | | 1 | 2 | +---- +---- + 3 rows in set (0.00 sec) mysql>TABLE tORDER BY bLIMIT 3OFFSET 2; +---- +---- + | a | b | +---- +---- + | 1 | 2 | | 13 | 3 | | 9 | 5 | +---- +---- + 3 rows in set (0.00 sec)
TABLESELECT在两个关键方面有所不同:
TABLE始终显示表的所有列。TABLE不允许对行进行任意过滤;也就是说,TABLE不支持任何WHERE子句。
为了限制返回哪些表列,使用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 t1UNION 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 t1UNION 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语句或两者结合使用。请参见“ UNION子句”。- 用
INTO填充用户变量,用INTO OUTFILE或INTO DUMPFILE将表数据写入文件。有关更多特定信息和示例,请参见“ SELECT ... INTO语句”。 在许多情况下,您可以使用子选择。给定任何
t1具有名为的列的表a,以及t2具有单个列的第二个表,则可以执行以下语句:SELECT *FROM t1WHERE aIN (TABLE t2);假设表的单列
ts被命名为x,则前面的语句等效于此处显示的每个语句(在两种情况下都产生完全相同的结果):SELECT *FROM t1WHERE aIN (SELECT xFROM t2);SELECT *FROM t1WHERE aIN (SELECT *FROM t2);有关更多信息,请参见“子查询”。
- 使用
INSERT和REPLACE语句,否则将使用SELECT *。有关更多信息和示例,请参见“ INSERT ... SELECT语句”。 TABLE也可以在许多情况下代替SELECTinCREATE TABLE ... SELECT或CREATE VIEW ... SELECT。有关更多信息和示例,请参见这些语句的描述。
