gpt4 book ai didi

postgresql - SQL查询关联表同一列上的多个匹配项

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

我有两个表,foos 和 bars。 bars 属于 foos,foos 有多个 bars(通过 ActiveRecord)。我想找到一个 foo,它具有完全(且仅)给定的酒吧名称列表的酒吧。

例如(请原谅任何伪代码)

bars_list = ["A", "B"]
foo = find_foo(bars_list)
foo.bars.map(&:name) = ["A", "B"]

Find foo 不一定是严格意义上的函数。它可以是返回匹配的 foo id 或非常高效的 ActiveRecord 函数的 SQL 查询。谢谢!

最佳答案

使用 GROUP BYHAVING 过滤结果集以获得所需数量的匹配条形记录:

SELECT foos.*
FROM foos
JOIN bars ON bars.foo_id = foos.id
WHERE bars.name IN ('bar1', 'bar2')
GROUP BY foos.id, foos.name
HAVING COUNT(*) = 2;

如果您有三个名字,请检查 COUNT(*) = 3 等等。

关于postgresql - SQL查询关联表同一列上的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46966489/

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