H5W3
当前位置:H5W3 > 问答 > 正文

使用 join 来替代not in 做查询

因为 not in不走索引,所以不在不得已情况下,就不要使用not in

下面使用 join 来替代not in 做查询

select ID from A where ID not in (select ID from B)

替换为

select A.ID from A left join B on A.ID=B.ID and B.ID is null
或者:
select A.ID from A left join B on A.ID=B.ID where B.ID is null

谁能帮我解释一下这个到底是啥意思
一个同事跟我解释说in 就是 is not null 那么 not in 就是 is null

回答

A left join B on A.ID=B.ID, 如果 B 表的ID 不在 A表里,就会返回 null 代替,否则 返回B.ID。是可以代替in ,not in

你用的是哪个数据库, not in 可以走索引
如果查询的列没有包含 B 表,没必要join,用性能更好的 exists
一般 left join 结合 is not null ,用来做批量插入和批量修改

未经允许不得转载:H5W3 » 使用 join 来替代not in 做查询

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址