是否有两条一样的记录的SQL该怎么写
程序员文章站
2022-06-11 13:11:45
...
在开发过程中会遇到这样一种场景:用户在这个表中有两条一样记录的所有用户给抓取出来,举个例子,你想把用户表有两个相同手机号码的记录给抓出来,该怎么来写SQL呢?
select mobile from users group by mobile having count(*)>1
这样你就能获取到相同的手机号码的记录了。想再一步获取详情信息之需这样子:
select * from users where mobile in (select mobile from users group by mobile having count(*)>1)
我们再来看一个具体的例子,以电商网站 ECShop 为例,想监控过去某段时间内的订单是否有重复的商品存在,该怎么写呢?毕竟这涉及到多张表。
select o.order_id,o.order_sn from ecs_order_goods g inner join ecs_order_info o on g.order_id=o.order_id where o.add_time > 1558748992 group by o.order_id HAVING count(g.goods_id) > 1
又或者这样的场景:同个用户是否有相同的充值记录
select user_id from ecs_user_account where paid_time > 1559267392 and process_type = 0 and is_paid=1 group by user_id,amount having count(*)>1
上一篇: Oracle 12C RAC关于临时表空间的一点启示
下一篇: PHP实现在线端口检测