我有一个显示来自两个不同表的信息的页面,为此我有两个查询。 这两个表之间没有相关信息。 由于两个查询都可能包含大量信息,因此我需要创建分页。 但是我不想要两个单独的分页,我只想要一个包含查询1和查询2的结果。
我该怎么做?
我唯一的想法是将两个查询的所有信息都提取到数组中,然后将数组合并为一个,然后创建基于该数组的分页。 那当然无助于节省资源。
答案 0 :(得分:3)
你可以使用联盟 - 你显示的列必须排成一行,所以这样的东西应该有效:
select
col1 col1_alias,
col2 col2_alias,
...
from
table1
where
...
union
select
col1,
col2,
...
from
table2
where
...
order by col1_alias, col2_alias
limit 10
联盟基本上会将所有数据汇总在一起,order by
和limit
将适用于整个结果集。
列的名称不需要在第二个选择中匹配,但使用第一个选择中的列名称order by
(或创建别名,根据您的数据集,这可能更具可读性)。