您现在的位置是:群英 > 数据库 > MySQL数据库
MySQL中in查询的基础用法是什么,IN子查询怎样做
Admin发表于 2022-08-12 17:56:512127 次浏览
这篇文章给大家介绍了“MySQL中in查询的基础用法是什么,IN子查询怎样做”的相关知识,讲解详细,步骤过程清晰,对大家进一步学习和理解“MySQL中in查询的基础用法是什么,IN子查询怎样做”有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

在mysql中,in常用于where表达式中,用于查询某个范围内的数据,语法为“select*from where field in(value1,value2,..)”,当in前面加not运算符时,表示与in相反不在这些列表项内选择。

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql怎样使用in查询

一、基础用法

mysql中in常用于where表达式中,其作用是查询某个范围内的数据。

select * from where field in (value1,value2,value3,…)

当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择

select * from where field not in (value1,value2,value3,…)

二、IN 子查询

更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)

在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0 的用户:

SELECT uid FROM user WHERE status=0

然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。

在in的子查询中常常会遇到查询效率太低问题,解决方法如下:

1、仍使用in子查询,多查询一次

SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )

2、使用LEFT JOIN

SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode

三、IN 运算符补充说明

IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:

SELECT * FROM user WHERE uid IN(1,2,'3','c')

一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:

SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')

使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。

四、关于 IN 运算符的效率问题

如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:

SELECT * FROM user WHERE uid IN (2,3,5)
// 等效为:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)

一般认为:

1、如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。

in或or在字段没有添加索引的情况下,所连接的字段越多(1 or 2 or 3 or 4 or…),or比in的查询效率低很多


感谢各位的阅读,以上就是“MySQL中in查询的基础用法是什么,IN子查询怎样做”的内容了,通过以上内容的阐述,相信大家对MySQL中in查询的基础用法是什么,IN子查询怎样做已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注群英网络,群英网络将为大家推送更多相关知识点的文章。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: mysql in查询
相关信息推荐
2022-04-27 16:43:59 
摘要:给大家带来一篇关于MySQL性能优化具体步骤的相关教程文章,内容涉及到MySQL性能、MySQL优化、性能优化、详解MySQL性能优化等相关内容,已被553人关注,更多关于详解MySQL性能优化的内容希望能够帮助到大家。
2022-10-19 17:33:27 
摘要:本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL中的用户创建与权限管理,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下。
2022-06-14 17:41:42 
摘要:在sql查询中group by的含义是用于结合合计函数,根据一个或多个列对结果集进行分组,它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部