簡體   English   中英

使用SQL(mysql)將一個子查詢的結果附加到另一個子查詢的結果

[英]With SQL (mysql) Append the results of one sub-query to that of another

我有兩個mysql表。 基本上我想在一個SQL查詢中組合兩個查詢(每個表一個)。 好像它應該很容易(有點像內部Join)但是內連接是將表2中的非uniqe值重復到我的結果數組中...我不希望它們重復...我想要從表/查詢2重復這些合並到 query1的結果記錄中

查詢1從表1中獲取記錄。結果是唯一的。 (一個ID返回一個記錄)它只是返回ID等於我的一個條件的記錄上的所有字段。 [我使用IN而不是一堆OR)

$sid = "'M-179','M-242','M-231','Q-2thru5'" ; 
$query = "SELECT * FROM table1 WHERE IN ($sid)`

查詢2從表2中獲取記錄。但結果不是唯一的。 一個ID可以返回許多記錄。

$query2 = "SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)";

所以我想從ALL返回的記錄中獲取EACH extra_data和pub_url字段,這些記錄只是打到查詢1結果的末尾。 我有道理嗎? 所以結果看起來像這樣......

[0] => Array
        (
            * all my returned fields from the 
             record returned by query 1 here
            $row['extra_data']  
            $row['pub_url']  <-returned record from query 2
            $row['extra_data'] 
            $row['pub_url']  <-another returned record from query 2
            $row['extra_data'] 
            $row['pub_url']  <-any another returned 
                              record from query 2, etc..
        )

結合結果是什么意思?

您是否希望query2的結果顯示在相同的相關行中,但只顯示額外的列,或者您希望它們顯示為新行。

對於第一種情況,您將不得不使用JOIN

但我有一種感覺,你想要做的是第二種情況。 在這種情況下,您將不得不使用UNION 但請注意,在這種情況下,兩個查詢的列必須匹配。 所以兩個查詢的聯合看起來像這樣:

-- pseudo code only
SELECT extra_data, pub_url FROM table1 WHERE IN ($sid)
union
SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)

嘗試類似於此的東西,它會將表1的結果連接到包含sid值的列的表2。

SELECT a.*, b.extra_data, pub_url
FROM table1 a
left outer join table2 b on a.sid = b.sid 
WHERE a.sid IN ($sid)

暫無
暫無

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

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