“sql”语句中“in”怎么用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“sql”语句中“in”怎么用?相关的知识,希望对你有一定的参考价值。

你这样构造in的范围不对。你这样是把in后面处理成一个字符串了。而in后面跟的应该是一个范围。

你可以自己写一个返回数据集的函数来将aa.ddid值处理成in的范围, 类似于:

假设函数: ft01(nvarchar(1000)) returns table tb (val int)。

那么, 这样更新里面子查询的in条件:

where id in (select val from ft01(aa.ddid))。

另外, 此解决方法只是从in条件上来说。

如果子查询只有1条记录,in和=是没有区别,如果子查询有多条记录,用=会出错的,所以in是无论只查询有多少条记录都可以使用,而=只有当子查询只有1条记录的时候才能使用。

in和exists理解上其实是差不多,但对数据库而言,in的执行顺序是先执行只查询条件,然后把记录和外查询核对,找符合条件的。

而exists是先执行外查询,再执行子查询,找到外查询记录后和只查询对比符合条件的,如果外查询和子查询的条目数差异很大,那么效率相差很明显的。

参考技术A in 里面不同的id是要用逗号隔开的in(1@,2@) 如果i是字符型的 每个id 都要加上单引号 参考技术B select * from table WHERE id like ('%$d11%') order by id desc

用like 就行了 不要用in .

mybatis sql in 查询(mybatis sql语句传入参数是list)mybatis中使用in查询时in怎么接收值

1.in查询条件是list时

<select id="getMultiMomentsCommentsCounts" resultType="int">
select moment_comment_count from tbl_moment_commentCount where mid in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")"> 
    #{item} 
</foreach> 
</select>

.1 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

  1. <select id="findByIdsMap" resultMap="BaseResultMap">  
  2.  Select  
  3.  <include refid="Base_Column_List" />  
  4.  from jria where ID in  
  5.  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
  6.   #{item}  
  7.  </foreach>  
  8. </select>  

2.in查询条件是枚举值时

默认下,使用select xxx where in(xx,xx)查询,返回结果是按主键排序的,如果要按in()中值的排列顺序,可以这样做:
 
select * from talbe where id in(3,2,4,1) ORDER BY FIND_IN_SET( id, ‘3,2,4,1‘) 

以上是关于“sql”语句中“in”怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中怎么实现in中的模糊查询

select-sql语句in的用法,在mybatis中sql中in是怎么用的

MYSQL 查询语句中in的用法

怎么用sql语句返回1-10这10个整数?

sql in用法

sql怎么用查询结果作为条件进行查询