gpt4 book ai didi

sql - postgres 选择数组列表的值必须存在的位置

转载 作者:行者123 更新时间:2023-11-29 13:43:33 25 4
gpt4 key购买 nike

我在 postgres 中遇到了一个查询问题。我需要选择某些规则数组必须存在值的所有用户标识,并且这些规则标识来自子查询。

这是我的表结构:

users: {user_id, name, email}
rules: {rule_id, name, description, query}
user_scores: {user_id, rule_id, points}

所以在上面的例子中我需要找出所有玩过所有规则的用户。

实际上,我想避免使用后端语言来循环检查用户是否对每条规则都有分数。我需要从存在所有 ruleid 的 user_scores 表中获取所有 userid。我实际上正在寻找 IN 操作,但本质上是 AND

select user_id
from user_scores
WHERE rule_id IN (select rule_id from rules)
group by user_id

因此,与其使用“IN”,不如使用“IN for ALL”......或类似的方式

我们将竭诚为您提供帮助。

最佳答案

要获得所有规则得分的所有用户的列表,您可以使用带有 rules 的外部连接:

SELECT u.user_id, u.name
FROM users AS u
JOIN user_scores AS us ON u.user_id = us.user_id
LEFT JOIN rules AS r ON us.rule_id = r.rule_id
GROUP BY u.user_id, u.name
HAVING (count(*) FILTER (WHERE r.rule_id IS NULL)) = 0;

我没法测试,所以可能会有一些小错误。

关于sql - postgres 选择数组列表的值必须存在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896575/

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