[英]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.