4

我有显示来自两个不同表的信息的页面,为此我有两个查询。这两个表之间没有相关信息。由于两个查询都可能包含大量信息,因此我需要创建分页。但是我不想要两个单独的分页,我只想要一个包含查询 1 和查询 2 的结果的分页。

我怎样才能做到这一点?

我唯一的想法是将两个查询的所有信息都提取到数组中,然后将数组合并为一个,然后基于该数组创建分页。这当然无助于节省资源。

4

1 回答 1

4

您可以使用联合 - 您要显示的列必须对齐,所以这样的事情应该可以工作:

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 byandlimit将应用于整个结果集。

列的名称不需要在第二次选择中匹配,而是使用第一次选择中的列名order by(或创建别名,根据您的数据集,这可能更具可读性)。

于 2012-10-10T12:07:26.767 回答