如何在SQL关联查询中按用户维度限制结果,返回指定数量用户的全部支付记录?
解决方法
原来的limit 2是直接限制返回的总行数,所以只会拿到用户1的2条支付记录。要获取用户1和用户2的所有支付记录,有两种常用写法:
- 直接指定目标用户ID:
SELECT * FROM user INNER JOIN payment ON payment.user_id = user.id WHERE user.id IN (1, 2);
这种方式精准筛选出用户1和2,关联支付表后就能拿到他们的全部支付记录。
- 如果需要取前N个用户的所有记录(比如前2个),可以先查询出目标用户再关联:
SELECT * FROM (SELECT * FROM user LIMIT 2) AS u INNER JOIN payment ON payment.user_id = u.id;
这种写法先从user表取出前2个用户,再和payment表关联,能确保拿到这两个用户的所有支付记录。
内容的提问来源于stack exchange,提问作者Jequex
相关产品推荐
相关产品推荐

