有一个这样的查询
用户表中的部分数据需要取到,同时去查询次用户最近一次充值的时间。求推荐思路 不想用循环。
正常做法是:先查询出所有的用户列表,然后循环这个数组 循环中查询此用户最后一次充值的时间追加在数组的末尾
求效率高的处理方法
有一个这样的查询
用户表中的部分数据需要取到,同时去查询次用户最近一次充值的时间。求推荐思路 不想用循环。
正常做法是:先查询出所有的用户列表,然后循环这个数组 循环中查询此用户最后一次充值的时间追加在数组的末尾
求效率高的处理方法
select A.user表字段 ,(select max(B.recharge_time) from recharge as B where B.关联id=A.keyId) as rechargeTime from user as A
借楼上的两张表一用,sql可以采取左连接:
select
u.phone,
r.createdAt
from
user u
left join recharges r on u.phone = r.phone
where
u.phone = ''
and r.createdAt in (
select max(createdAt) from recharges
)
group by u.phone
类似于这种思路,不过那个sql的in性能不是很好,这里可以再稍微优化下
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
用户表 users :
用户充值表 recharges : 同一个用户多条记录
SELECT phone, max(createdAt) FROM recharges where phone in (SELECT phone FROM users) GROUP BY phone