我有一群用户,每个用户都有很多帖子。
架构:
Users: id
Posts: user_id, rating
如何找到至少有一篇帖子评级高于(例如 10)的所有用户?
我不确定是否应该为此使用子查询,或者是否有更简单的方法。
Thanks!
要查找至少有一篇评分高于 10 的帖子的所有用户,请使用:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS 不关心其中的 SELECT 语句 - 您可以用 1/0 替换 NULL,这应该会导致除以零的数学错误......但它不会,因为 EXISTS 只关心过滤WHERE 子句。
相关性(WHERE p.user_id = u.id)就是为什么这被称为相关子查询的原因,除了评级比较之外,它只会返回 USERS 表中 id 值匹配的行。
EXISTS 也更快,具体取决于情况,因为只要满足条件它就会返回 true - 重复并不重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)