当前位置: 首页 > 面试题库 >

SqlAlchemy:筛选以匹配所有而不是列表中的任何值?

唐兴思
2023-03-14
问题内容

我想查询一个结表列的值aID匹配ID列表的所有值ids=[3,5]bID

这是我的联结表(JT):

 aID    bID
   1      1
   1      2
   2      5
   2      3
   1      3
   3      5

我有这个查询: session.query(JT.aID).filter(JT.bID.in_(ids)).all()

该查询返回的aID12并且3因为它们都与行的任一35bID列。我希望查询返回的内容是2因为这是唯一在其列aID中具有ids列表所有值的值bID

不知道如何更好地解释问题,但是我如何得出结果呢?


问题答案:

您正在寻找对行集有效的查询。我认为带有having子句的分组是最好的方法:

select aid
from jt
where bid in (<your list>)
group by aid
having count(distinct bid) = 2

如果可以将所需的ID放在表中,则可以执行以下更通用的方法:

select aid
from jt join
     bids
     on jf.bid = bids.bid
group by aid
having count(distinct jt.bid) = (select count(*) from bids)


 类似资料:
  • 我有以下表在PostgreSQL 11.0 我想过滤上表,这样,如果col2和col4相等,只应选择此匹配项,并排除下面两行。当col2和col4不相等时,应该保留col2=col3的行。 所需的输出是: 我正在尝试下面的问题,到目前为止没有成功。 但这将包括已经有匹配的行,我希望在最终输出中排除这些行。

  • 本文向大家介绍sqlalchemy 筛选,包括了sqlalchemy 筛选的使用技巧和注意事项,需要的朋友参考一下 示例 给定以下模型 您可以过滤查询中的列: 对于第一种情况,有一个快捷方式: 可以使用AND关系通过链接filter方法来构成过滤器: 或更灵活地使用重载按位运算符&和|: 不要忘记内括号来处理运算符优先级。

  • 问题内容: 在纯postgres中,我们可以编写: 或者 没有原始sql的情况下如何在sqlalchemy的帮助下进行相同的操作? 问题答案: 等于1。 因此,您可以使用该方法。 我不记得曾经使用PostgreSQL多年。你? 如果您要处理 数组列, 并想测试该 列中 是否包含给定元素(或给定数组的所有元素),则可以利用PostgreSQL数组运算符 ()或更合适地利用反同级 ()。 数组运算符的

  • 我创建了一个用户,他属于一个名为Security的组。在Camunda modeler中,我明确地将任务分配给了组设施。然而,在运行应用程序时,我可以看到属于组安全性的用户可以查看并声明分配给组设施的任务。 如何确保任务列表仅显示分配给特定用户组的任务?目标是用户可以查看另一个组的任务。

  • 问题内容: 我是正则表达式新手,但我了解如何按顺序匹配正则表达式查询中的任何字符(例如[abc]将匹配a,b或c中的任何一个。此外,我相信“ abc”将完全匹配abc)。 但是,我该如何构造一个以任何顺序匹配所有字符abc的正则表达式查询?因此,例如,我希望它匹配“ cab”或“ bracket”。我使用Python作为脚本语言(不确定是否重要)。 问题答案: 在Python中,我不会为此目的使用

  • 开始时,所有标志均为0。我使用while循环来检查是否至少有一个元素的标志为0: 如果返回,那么我将继续处理我的列表: 实际上,我想在迭代my_list时移除元素,但不允许在迭代时移除项。 由于我无法在迭代时删除元素,所以我发明了这些标志。但是包含许多项,循环在每个循环中读取所有项,这会消耗大量时间!你有什么建议吗?