在Mysql5.0 中In 用法的疑惑
发布网友
发布时间:2022-04-23 02:55
我来回答
共3个回答
热心网友
时间:2022-04-11 05:37
select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)
这种情况下,
执行
SELECT * FROM A where A.bigclass in(select arrchild from B)
相当于执行
SELECT * FROM A where A.bigclass in( '1,2,35,5' )
结果肯定是没有。
假如你的
select arrchild from B 的查询结果是
1
2
35
4
这样的 4 行数据。
那么
SELECT * FROM A where A.bigclass in(select arrchild from B)
就等价于
SELECT * FROM A where A.bigclass in(1,2,35,5)
如果
select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)
又要实现
SELECT * FROM A where A.bigclass in(1,2,35,5) 的效果。
一个变通的办法是:
SELECT * FROM A
where
INSTR ( CONCAT ( ',' , (select arrchild from B) , ',' ),
CONCAT (',' , A.bigclass , ',' ) ) > 0追问啊,我明白了
SELECT * FROM A where A.bigclass in(1,2,35,5) 这里面的(1,2,35,5) 相当于多个值。
而(select arrchild from B 的查询结果有且只有一条记录且内容是就是 "1,2,35,5")相当于一个值。
热心网友
时间:2022-04-11 06:55
使用的时候他会将select arrchild from B查询出来的每条记录当做一个整体
SELECT * FROM A where A.bigclass in(select arrchild from B) 这个相当于
SELECT * FROM A where A.bigclass in( ‘1,2,35,5’ ) ----所以查不出来
------------------------------
arrchild
1,2,35,5
------------------------------
想要下面的结果,
select arrchild from B这个查询出来的结果要是这样的
----------------------------------------
arrchild
1
2
35
5
----------------------------------------追问注:select arrchild from B 的查询结果有且只有一条记录且内容是就是 "1,2,35,5"
热心网友
时间:2022-04-11 08:30
不是查不到,应该是速度很慢。如果可以的话尽量使用=来代替in语句,myql的in语句貌似没有优化过,效率很低的
在Mysql5.0 中In 用法的疑惑
select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)这种情况下,执行 SELECT * FROM A where A.bigclass in(select arrchild from B)相当于执行 SELECT * FROM A where A.bigclass in( '1,2,35,5' )结果肯定是没有。假如你的 select arrchild from B 的查询...
MySQL无法命中主键,我使用了in,参数个数也就一百多个。MySQL版本5.5
应该是说,你的in中的参数值,可能占到大多数的数据,比如 80%,那么根据统计信息判断,使用索引与全表扫描 没有什么区别的时候,就可能不用主键索引。
mysql 中 in的用法有哪些?
1.in 后面是记录集,如:select * from table where uname in(select uname from user);2.in 后面是字符串,如:select * from table where uname in('aaa',bbb','ccc','ddd','eee',ffff'');注意:这里一定要将字符串用单引号'' 标注起来;3.in 后面是数组,...
mysql查询in为什么用不上索引
1.mysql查询in用不上索引,说明查询语句本身有问题。2.MySQL是查询语句,最好用Access 2010来操作。3.查询是用来操作数据库中的记录对象,利用它可以按照预先定义的不同条件从数据表或其它查询中筛选出需要操作的字段,并可以把它们集中起来,形成动态数据集。用户可以浏览、查询、打印,甚至修改这个动态数...
mysql in是什么意思?
MySQL中的IN是一种操作符,用于指定查询条件中所需数据的范围。它可以将查询条件与数据列表一起使用,以返回在指定列表中的任何一行。IN操作符可以与WHERE和HAVING语句一起使用,常用于select语句中作为过滤器,以便能够在查询结果中查找属于特定值或集合的行。使用IN操作符是很方便的,可大大减少复杂的...
mysql查询 怎么使用 in
一般典型有两种用法:一是IN常量,例如下面语句查询一、三年级的学生:SELECT FROM student WHERE grade IN ('一','三');二是使用子查询,也就是IN(SQL语句),例如下面的语句查询不及格的班级的所有学生:SELECT FROM student WHERE classno IN (select classno from scores where score<60 );
mysql查询 怎么使用 in
in作为查询条件,一般典型有两种用法:一是IN常量,例如下面语句查询一、三年级的学生:SELECT * FROM student WHERE grade IN ('一','三');二是使用子查询,也就是IN(SQL语句),例如下面的语句查询不及格的班级的所有学生:SELECT * FROM student WHERE classno IN (select classno from scores ...
mysql查询语句in和exists二者的区别和性能影响
2:select * from B where cc in (select cc from A) 效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc) 效率低,用到了A表上cc列的索引。not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not ...
mysql查询语句in和exists二者的区别和性能影响
性能影响的话,这个是没有固定那一个好,要针对自身条件来使用。一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表)1:sele...
mysql in 会使用索引吗
MySQL中使用IN会不会走索引 文章很短,先看下结论,在看下文。结论:IN肯定会走索引,但是当IN的取值范围较大时会导致索引失效,走全表扫描 navicat可视化工具使用explain函数查看sql执行信息 场景1:当IN中的取值只有一个主键时 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引:type...