簡體   English   中英

內部聯接以接收多個值

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

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