[@徐雷frank][¥20]如下sql为当前我们的业务库中的一个去重的逻辑-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

[@徐雷frank][¥20]如下sql为当前我们的业务库中的一个去重的逻辑

晓生寒 2018-12-12 20:57:52 1261

如下sql为当前我们的业务库中的一个去重的逻辑。

select * from test_user where (user_id,area_id) in (

select user_id,area_id from test_user where user_id is not null group by user_id,area_id HAVING count(*) > 1

) and id not in (

select SUBSTRING_INDEX(GROUP_CONCAT(id order by a_id desc),',',1) from test_user where user_id is not null group by user_id,area_id HAVING count(*) > 1

)

但是使用该查询发现子查询中的记录并没有被排除掉,也就是NOT IN没有生效,但是我们用到该子查询去查询的时候也的确是有数据的。并且ID列为主键不存在为NULL的情况

SQL
业务逻辑 去重sql 业务sql frank业务 sql逻辑
分享到
取消 提交回答
全部回答(1)
  • 徐雷frank
    2019-07-17 23:20:18

    用执行计划分析一下,SQL语句的执行,索引和数据过滤、表扫描情况,看看是NOT IN有没有生效。
    如果没有生效是否是前面的条件已经过滤掉了后面的,优化器没有使用后面的条件限制。

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

相似问题
最新问题