编写SQL查询获取用户子女好友的联系人子女的朋友
解决方案:获取身为用户子女好友的联系人子女的朋友
我来帮你拆解这个需求并写出对应的SQL查询。首先得把各个表之间的关联逻辑理清楚,不然容易绕晕:
咱们要找的是满足以下条件的用户Y:
- Y是某个用户X的好友
- X是原用户U的联系人C的子女
- 同时X还是原用户U的子女K的好友
接下来直接上SQL代码,我给每个表加了别名,方便理解:
SELECT DISTINCT uf_target.friend_id AS target_friend_id, u.user_id AS original_user_id, uc.contact_id AS contact_id, ac_contact.child_id AS contact_child_id, ac_user.child_id AS original_user_child_id FROM UserTable u JOIN AdultChild ac_user ON u.user_id = ac_user.user_id -- 关联原用户和他们的子女 JOIN UserFriends uf_child ON ac_user.child_id = uf_child.child_id -- 找到原用户子女的好友(也就是X) JOIN AdultChild ac_contact ON uf_child.friend_id = ac_contact.child_id -- 确认X是某个用户的子女(这里就是联系人C的子女) JOIN UserContact uc ON ac_contact.user_id = uc.contact_id AND uc.user_id = u.user_id -- 确保这个用户C是原用户U的联系人 JOIN UserFriends uf_target ON ac_contact.child_id = uf_target.child_id -- 找到X的好友(也就是我们要的Y) -- 如果要针对特定原用户查询,添加下面的WHERE条件 -- WHERE u.user_id = 你的目标用户ID
代码细节说明:
- 用
DISTINCT是为了避免重复结果(比如同一个Y可能被多个关联路径找到) - 每个
JOIN都对应了咱们之前梳理的逻辑链条,一步步缩小范围,最终定位到目标用户Y - 输出字段里包含了各个关联环节的ID,方便你后续验证或者扩展使用
内容的提问来源于stack exchange,提问作者InnoSys
相关产品推荐
相关产品推荐

