我希望将两个不相关的表连接到一个表中,这样我就可以按公共(public)字段排序并将组合结果集限制在页面上显示。
例子
Table 1
Field1 | Field2 | Field3 | date_posted
--------------------------------------
Blah | Blah2 | Blah3 | 2013-02-01
Table 2
Field4 | Field 5 | date_posted
------------------------------
Blah4 | Blah5 | 2013-01-01
Result
Field1 | Field2 | Field3 | Field4 | Field5 | date_posted
--------------------------------------------------------
Blah | Blah2 | Blah3 | NULL | NULL | 2013-02-01
NULL | NULL | NULL | Blah4 | Blah5 | 2013-01-01
这是因为我之前设置了一个数据库来在单独的页面上显示这些表格,现在客户想要将它们合并到一个页面中。如果我单独运行查询,然后在 php 中组合数据,则存在某些问题,例如分页以及必须选择每个查询的固定数量,即使它们不是最新的。
最佳答案
无需加入:
select field1, field2, field3, null as field4, null as field5, date_posted
from table_1
union all
select null, null, null, field4, field5, date_posted
from table_2
要按特定列排序,只需添加一个order by
select field1, field2, field3, null as field4, null as field5, date_posted
from table_1
union all
select null, null, null, field4, field5, date_posted
from table_2
order by date_posted
请注意,在 UNION 中,order by 始终适用于完整结果,而不适用于各个部分。因此,即使它紧跟在第二次选择之后,它也会对所有内容进行排序。
使用LIMIT
实现分页
关于mysql - 没有公共(public)字段的 SQL 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581746/