限制MySQL中跨表的结果总数?

为此,您可以将UNION ALL与LIMIT概念一起使用。对于我们的示例,我们将创建三个表。

让我们创建第一个表-

mysql> create table demo3
−> (
−> value int
−> );

借助insert命令将一些记录插入表中-

mysql> insert into demo3 values(10);

mysql> insert into demo3 values(20);

mysql> insert into demo3 values(30);

使用select语句显示表中的记录-

mysql> select *from demo3;

这将产生以下输出-

+-------+
| value |
+-------+
| 10    |
| 20    |
| 30    |
+-------+
3 rows in set (0.00 sec)

创建第二张表的查询如下-

mysql> create table demo4
−> (
−> value1 int
−> );

借助insert命令将一些记录插入表中-

mysql> insert into demo4 values(40);

mysql> insert into demo4 values(10);

mysql> insert into demo4 values(60);

使用select语句显示表中的记录-

mysql> select *from demo4;

这将产生以下输出-

+--------+
| value1 |
+--------+
| 40     |
| 10     |
| 60     |
+--------+
3 rows in set (0.00 sec)

这是创建第三个表的查询。

mysql> create table demo5
−> (
−> value2 int
−> );

借助insert命令将一些记录插入表中-

mysql> insert into demo5 values(100);
mysql> insert into demo5 values(60);
mysql> insert into demo5 values(50);

使用select语句显示表中的记录-

mysql> select *from demo5;

这将产生以下输出-

+--------+
| value2 |
+--------+
| 100    |
| 60     |
| 50     |
+--------+
3 rows in set (0.00 sec)

以下是限制表中结果总数的查询-

mysql> select tbl.*
−> from ((select * from demo3 ORDER BY value DESC LIMIT 2
−> ) UNION ALL
−> (select * from demo4 ORDER BY value1 DESC LIMIT 2
−> ) UNION ALL
−> (select * from demo5 ORDER BY value2 DESC LIMIT 2
−> )
−> ) tbl
−>
−> LIMIT 2;

这将产生以下输出-

+-------+
| value |
+-------+
| 30    |
| 20    |
+-------+
2 rows in set (0.00 sec)