簡體   English   中英

沒有公共字段的SQL連接表

[英]SQL Join Tables with no common field

我希望將兩個不相關的表合並到一個表中,以便我可以按一個公共字段排序並限制組合的結果集顯示在頁面上。

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中,順序始終對完整結果起作用,而不對單個部分起作用。 因此,即使將它放置在第二個選擇之后,它也會對所有內容進行排序。

使用LIMIT實現分頁

SELECT Field1, Field2, Field3, date_posted
FROM Table1
UNION
SELECT Field4, Field5, date_posted
FROM Table2
ORDER BY date_posted LIMIT 20

嘗試這個:

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

SQL小提琴: http ://sqlfiddle.com/#!2 / 69a46 / 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM