如何根据输入数组在双向多对多关系中选择多个值

时间:2017-07-07 03:48:22

标签: mysql sql arrays database union-all

如何使下面的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

1 个答案:

答案 0 :(得分: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)