[英]Inner join to receive multiple values
假設我有表“ apple”和“ orange”,我希望能夠內部連接這些表,在這些表中我提供“ num”並接收任務名稱,以換取所有4個任務。
但是,似乎內部聯接僅適用於一項任務,而不適用於全部四個任務。
SELECT orange.name
FROM apple
INNER JOIN orange ON orange.task_id = apple.Task1
WHERE num = ?
給定我說的num = 1,這將提供Task1的名稱。
給定num = 1,有沒有辦法接收Task1,Task2,Task3,Task4的名稱? 還是我需要有4個單獨的請求?
您可以通過以下代碼嘗試
select orange.name from
(select Task1 as task from apple t1
union
select Task2 as task from apple t1
union
select Task3 as task from apple t1
union
select Task4 as from apple t1
) T inner join orange on orange.task_id=T.task
SELECT apple.num
, o1.name AS task1
, o2.name AS task2
, o3.name AS task3
, o4.name AS task4
FROM apple
INNER JOIN orange o1 ON o1.task_id = apple.Task1
LEFT OUTER JOIN orange o2 ON o2.task_id = apple.Task2
LEFT OUTER orange o3 ON o3.task_id = apple.Task3
LEFT OUTER orange o4 ON o4.task_id = apple.Task4
WHERE apple.num = ?
上面的查詢將僅返回具有至少1個Task的行(假定它位於apple.Task1中)。 如果始終保證有4個任務,則可以對每個JOIN
使用INNER JOIN
JOIN
來縮小結果。 否則, LEFT OUTER JOIN
不會消除具有NULL
任務的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.