我希望将两个不相关的表连接到一个表中,这样我就可以按公共字段排序并限制组合结果集显示在页面上。
实施例
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中组合数据,则存在某些问题,例如分页以及必须选择每个的设定数量,即使它们不是最新的。
答案 0 :(得分:4)
无需加入:
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中,订单始终适用于完整结果,而不是单个部件。因此,即使它在第二次选择之后立即放置,它也会对所有内容进行排序。
使用LIMIT
答案 1 :(得分:1)
SELECT Field1, Field2, Field3, date_posted
FROM Table1
UNION
SELECT Field4, Field5, date_posted
FROM Table2
ORDER BY date_posted LIMIT 20
答案 2 :(得分:1)
试试这个:
select field1, field2, field3, null field4, null field5, date_posted from table1
union all
select null field1, null field2, null field3, field4, field5, date_posted from table2