欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

是否有两条一样的记录的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