2017-07-07 40 views
1

如何使select語句如下處理多個輸入(列表)在一次還是回到了類似的結果列表作爲單個輸入如何在雙向多對多的關係基於輸入數組中選擇多個值

已經過了幾個小時了,我被卡住了 - 我需要幫助編寫一個mysql語句來從表中找到一個「鏈接」的ID列表。

這個問題背後的想法是爲查詢提供一個id值數組,並讓它從表的兩邊返回鏈接的所有其他id,將其從數組傳遞到每個從數組傳入的id單個逗號勾勒清單。

表結構 「team_permissions」

first_teamID | second_teamID 
    113   |  112 
    114   |  112 
    118   |  117 
    119   |  112 
    119   |  113 
    119   |  114 

工作 「得到每一個團隊的權限」 SQL語句 - 需要養活一個列表到這個

SELECT first_teamID AS team_permissions 
FROM team_permissions 
WHERE second_teamID = ? 

UNION ALL 

SELECT second_teamID AS team_permissions 
FROM team_permissions 
WHERE first_teamID = ? 

預計單輸入 - >輸出示例 - 此作品

  • (? = 112)將產生的結果:[113, 114,119]
  • (= 113)將產生 結果:?[112,119]
  • (= 117)將 得到的結果:[ 118]
  • (= 119?)將 得到的結果:[112,113,114]

預期多輸入 - >輸出示例

  • (? = [112,113])將得出結果:[112,113, 114,119]
  • (α= [113,119])將產生結果:[112,113,114,119]
  • (= [112,114,118])將產生的結果:[112,113,114,117,119]

team_permissions table structure

+0

您正在尋找不支持的樞軸功能xist在mysql中。 您可以通過發出幾個查詢以編程方式執行此操作。 看看這裏的一些例子: https://stackoverflow.com/questions/12004603/mysql-pivot-row-into-dynamic-number-of-columns and here: https://stackoverflow.com/questions/1241178/MySQL的,行至列 –

回答

1

只需使用WHERE IN,例如:

SELECT first_teamID AS team_permissions 
FROM team_permissions 
WHERE second_teamID IN (113, 119) 
UNION ALL 
SELECT second_teamID AS team_permissions 
FROM team_permissions 
WHERE first_teamID IN (113, 119) 
+0

我知道有一個簡單的回答這個問題。謝謝蒂姆! WHERE IN子句做到了這一點。 – gheckman