回答

收藏

SQL至少其中一个查询

技术问答 技术问答 341 人阅读 | 0 人回复 | 2023-09-14

我有很多用户,每个用户都有很多帖子。
% [7 s6 a+ u/ y0 h+ lUsers: idPosts: user_id,rating如何找到至少一个帖子的评分高于10个用户?1 d, h4 e5 t- A7 X3 o% f
我不确定是否应该使用它subQuery,或者是否有更简单的方法。
8 J5 j# x3 r* ]. w4 W! ?5 @2 C, x谢谢!( B& ]4 x) M8 j- ^. X
                                                               
7 \. U- N, y. g4 z, L- q    解决方案:                                                               
0 m* N/ ?# C5 W" m, r                                                                要找到所有至少一篇文章得分高于10分的用户,请使用:( ]0 d/ P# H$ P4 D! h0 F$ ^9 ~6 o
SELECT u.*  FROM USERS u WHERE EXISTS(SELECT NULL                FROM POSTS p               WHERE p.user_id = u.id                 AND p.rating > 10)EXISTS不在乎SELECT语句-4 J1 {, W* `1 R0 a; v! r
您可以将NULL替换为1/0,这将导致除以零的数学错误…但它不会,因为EXISTS只关心过滤WHERE子句。
& U( ~" K6 \" O0 u1 Q- Q相关性(WHERE p.user_id = u.id)这就是为什么它被称为相关子查询,除了评级比较,它只会返回ID值匹配的USERS表中的行。  P% B2 V, [& ^) ]# ~/ w
根据情况,EXISTS它更快,因为一旦满足条件,就会回来true-重复并不重要。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则