mysql - 没有公共(public)字段的 SQL 连接表

标签 mysql sql database

我希望将两个不相关的表连接到一个表中,这样我就可以按公共(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/

相关文章:

sql - 是否使用不同子句进行排序

mysql - error -1054 order 子句中的未知列 e.id

mysql - 使用多行条件更新 mySQL 条目

MySQL多表选择SUM查询

mysql - 外键约束的格式不正确 - mysql

android - 表 "Tablename"没有名为 "columnname"的列,但它有一个

sql - 获取 SQL 服务器组中可用服务器的列表

database - 如何在查询中同时使用 LIKE 和 OR

sql - 当您有这样的发票表时是否需要付款表?

php - 为什么 mysqli_escape_string 需要数据库连接?