簡體   English   中英

查詢兩個表-但不嘗試聯接?

[英]Query Two Tables - but not trying to JOIN?

我有兩個表幾乎具有相同的列。 第一個表包含特定記錄的“當前”狀態,第二個表包含該記錄的所有先前狀態(這是一個歷史記錄表)。 第二個表具有到第一個表的FK。

我想查詢兩個表,以便獲得整個記錄的歷史記錄,包括一個結果中的當前狀態。 我不認為JOIN是我要執行的操作,因為它“水平”“連接”了多個表(一個表的一個或多個列與另一表的一個或多個列組合以產生包含來自以下列的結果兩個表)。 而是,我試圖“垂直”地“連接”(???)表(意味着,沒有列被添加到結果中,只是兩個表的結果都落在結果集中的同一列下) 。

不確定我要表達的內容是否有意義-或在MySQL中是否可行。

聯盟。

Select colA, colB From TblA

UNION

Select colA, colB From TblB

為此,可以在兩個SELECT語句之間使用UNION 我還建議以以下方式從派生表中進行選擇,以便您可以按結果集中的列進行排序。 假設我們要合並以下兩個查詢的結果:

SELECT FieldA, FieldB FROM table1;
SELECT FieldX, FieldY FROM table2;

我們可以將它們與UNION語句一起加入,如下所示:

SELECT Field1, Field2 FROM (
    SELECT FieldA AS `Field1`, FieldB AS `Field2` FROM table1 
    UNION SELECT FieldX AS `Field1`, FieldY AS `Field2` FROM table2) 
AS `derived_table` 
ORDER BY Field1 ASC, Field2 DESC

在此示例中,我從table1table2字段中選擇了相似但名稱不同的字段,它們共享相同的數據類型。 他們匹配了使用別名( 例如FieldAtable1FieldXtable2兩種地圖Field1的結果集, 等等 )。

如果每個表具有相同的列名,則不需要字段別名,並且查詢變得更簡單。


注意:在MySQL中,即使不打算使用給定的名稱,也必須命名派生表。

您在第一個桌子上左加入后。 這將使我可以在右側輸入一個數字(兩者都存在)或null(僅存在於左表中)

你要

select lhs.* , rhs.id from lhs left join  rhs using(Id) 

暫無
暫無

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

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