簡體   English   中英

Mysql連接2個彼此不相關的表

[英]Mysql join 2 tables that are unrelated to each other

有沒有辦法聯接兩個完全不相關的表?

我有2個表,分別稱為“ writes”和“ posts”。posts是人們在自己的個人資料上寫的消息。writes是人們在另一個用戶個人資料上寫的消息。

在加載用戶個人資料時,我希望他們在自己的時間軸上同時張貼所有帖子。 我怎樣才能做到這一點?

有沒有辦法將這些表連接在一起? 還是我應該制作一個完整的其他系統來加載時間線?

SELECT q1, q2 FROM
(SELECT posts.* as q1 FROM writes as a) t1, 
(SELECT writes.* as q2 FROM posts as b) t2

對我沒用

並從帖子中選擇*,寫給我一個交叉聯接表。

這些表具有以下結構:

帖子:

#1 id int
#2 user_id int
#3 post varchar (4096)
#4 last_changed datetime
#5 posted_at datetame
#6 type varchar (32) (In the post case it is 'POST')

寫:

#1 id int
#2 writer_id int (the user_iud who has written it)
#3 user_id int (the user_id of the person this write is written on)
#4 written varchar (the text)
#5 last_changed datetime
#6 written_at datetime
#7 type varchar (32) (in this case it it 'WRITE')

您可以使用UNION將“不同選擇”查詢的結果合並為一個。 由於兩個Select語句之間不會有任何重復,因此可以使用UNION ALL使其更高效

另外,要進行整體排序 ,您需要在Derived表中獲取完整的結果集,並使用Order By子句。 您可以分別使用ASCDESC以升序或降序設置它。

我們還需要確保兩個SELECT語句返回的列數相同:

SELECT dt.id, 
       dt.writer_id, 
       dt.user_id, 
       dt.post, 
       dt.last_changed, 
       dt.posted_at, 
       dt.type 
FROM 
(
 (
  SELECT id, 
         user_id AS writer_id, 
         user_id, 
         post, 
         last_changed, 
         posted_at, 
         type
  FROM posts
 )

  UNION ALL 

 (
  SELECT id, 
         writer_id, 
         user_id, 
         written AS post, 
         last_changed, 
         written_at AS posted_at, 
         type
  FROM writes
 )
) AS dt 
ORDER BY dt.posted_at ASC 

文檔詳細信息:

UNION用於將來自多個SELECT語句的結果合並為一個結果集。

第一個SELECT語句中的列名用作返回結果的列名。 每個SELECT語句的相應位置中列出的所選列應具有相同的數據類型。 (例如,第一條語句選擇的第一列應與其他語句選擇的第一列具有相同的類型。)

如果對應的SELECT列的數據類型不匹配,則UNION結果中的列的類型和長度將考慮所有SELECT語句檢索到的值。

全部使用工會

select  id ,user_id,post,last_changed,posted_at,type from posts
 union all    
select  id,user_id,written,last_changed,written_at,type from write

統一規則

Each SELECT statement within UNION must have the same number of columns
The columns must also have similar data types
The columns in each SELECT statement must also be in the same order

暫無
暫無

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

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