sql里边,用in、not in 的时候,范围是给定的,那么还需要转化成exists吗?

sql里边,用in、not in 的时候,范围是给定的,那么还需要转化成exists吗?,第1张

当然不会了,使用EXISTS或者NOT EXISTS只是为了表面IN和NOT IN里面的全表检索,因为IN里面首先要执行完里面的查询内容,而EXISTS是遇到符合的就会停止检索,所以说EXISTS的效率要高于IN,而如果里面的内容是固定的,那么本身里面就没有了全表检索的语句,这样本身效率就要快很多了,而完全没有必要使用EXISTS,而且即使你想使用,这个语法也无从写起了。

rowid In (Select Max(Rowid)
From er_busitem
where substr(ts, 0, 4) like '2015'
Group By pk_jkbx, defitem43)
这句是干嘛用的?

mysql的in条件查询,是括号里拼接逗号相隔的字串,这个字长里的个数还有限制,网上的说法是1000个,为了避免超出该范围,可专门封装一个方法

1使用exists写法替代in写法,exists写法是使用条件查询替代in写法里的一长串字串,这个有时候没法使用,比如使用第三方接口查学校一年级2千个学生的考试成绩,你只知道这些学生的id,没有更多的关联条件

2使用or的写法,将in条件过长的字串拆开,mysql支持以下写法:

方法封装:

测试效果:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13348478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存