gpt4 book ai didi

mysql - 检查数组至少包含数组的所有值

转载 作者:行者123 更新时间:2023-11-29 09:29:16 24 4
gpt4 key购买 nike

我有一个关于 MySQL 查询的问题。

我有一个表角色和另一个表上下文。每个角色都可以使用连接表role_context与多个上下文链接。示例:

roleA->context1
roleA->context2
roleB->context1

我想要一个查询来获取与我给出的所有上下文匹配的所有角色。示例:

  • 如果参数中有 ['context1'],我希望结果中有 ['roleA', 'roleB']
  • 如果参数中有 ['context2'],我希望结果中有 ['roleA']
  • 如果参数中有 ['context1', 'context2'],我希望结果中有 ['roleA']

我尝试过使用

SELECT *
FROM role_context
INNER JOIN context ON role_context.context_name = context.name
WHERE context.name IN ["ETT","FR"]

但就像它是我的第三个条件的返回 roleAroleB 一样。

有人对这个查询有想法吗?或者是我的SQL架构不好?

最佳答案

架构还不错,只是 SQL 没有用于此类任务的内置运算符。您可以使用以下查询来选择具有给定列表中所有上下文的角色(必须作为 IN 子句传递):

SELECT role_context.role_name
FROM role_context
JOIN context ON role_context.context_name = context.name
WHERE context.name IN ('context1', 'context2')
GROUP BY role_context.role_name
HAVING COUNT(context.name) = 2 -- here 2 corresponds to the number of items in the above list

关于mysql - 检查数组至少包含数组的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com