精华内容
下载资源
问答
  • mybatis xml中使用where 条件中的in方法

    万次阅读 2019-03-12 10:51:20
    WHERE id in (" separator="," close=")"> #{item} </foreach> 如上方法使用in,  注意,传入参数是List<Long> ,如果传入是array 则需要修改collection="list"部分定义为 collection=...
    <select id="queryCount" resultType="cn.bnsr.edu_yun.view.FileView">
          SELECT sum(download_times) as downloadNum ,sum(click_times) as browseNum
          FROM  file_property 
        <if test="_parameter != null">
          WHERE id in 
             <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
                 #{item}  
               </foreach>  
          </if>
      </select>

    如上方法使用in,

      注意,传入的参数是List<Long> ,如果传入的是array 则需要修改collection="list"部分定义为 collection="array" 

    https://www.cnblogs.com/start-fxw/p/5780225.html

    展开全文
  • 决定改成变量绑定形式,但是发现一个比较棘手问题,就是在查询条件中含有in,最后用Google大法,找到了解决方案。记录下来。 1. [code="java"] create or replace type varcha...
    监控数据库的 hard parse ,发现有不少sql语句,是由于后台的批价程序,启用的动态sql,但是是用字符串拼装的,没用变量绑定,造成了大量的sql的硬解析。
    决定改成变量绑定的形式,但是发现一个比较棘手的问题,就是在查询条件中含有in,最后用Google大法,找到了解决方案。记录下来。

    1.

    create or replace type varchar2TableType as table of varchar2(2000);


    2.

    create or replace function f_str2List( p_string in varchar2 )
    return varchar2TableType
    is
    v_str varchar2(32767) default p_string || ',';
    v_n number;
    v_data varchar2TableType := varchar2TableType();
    begin
    loop
    v_n := to_number(instr( v_str, ',' ));
    exit when (nvl(v_n,0) = 0);
    v_data.extend;
    v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));
    v_str := substr( v_str, v_n+1 );
    end loop;

    return(v_data);
    end f_str2List;


    3.

    select *
    from t_subscriberinfos a
    where a.subscriberid in
    (select * from the (select cast(f_str2List(:v_subs) as varchar2TableType) from dual))



    把v_subs 用字符串替代一下 就可以了
    展开全文
  • MySQL中where条件中IN的慢查询优化我们在编写SQL查询语句时,有时候会遇到连表查询情况,有时业务场景为,要查询满足某种条件一系列id数据。优化方式一:示例:查询出指定时间之后凡是上传过图片用户所在...

    MySQL中where条件中IN的慢查询优化

    我们在编写SQL查询语句时,有时候会遇到连表查询的情况,有时的业务场景为,要查询满足某种条件的一系列id的数据。

    优化方式一:

    示例:查询出指定时间之后凡是上传过图片的用户所在的镇和镇的管理员名。这种优化方式是另外一个博主那里借鉴过来的。

    SQL:

    SELECT DISTINCT user_name,town_name FROM t_farmers WHERE id IN

    (SELECT DISTINCT farmer_id FROM t_farmers_images WHERE create_time>='2017-07-05')

    ---------------------

    作者:pengyufight

    来源:CSDN

    原文:https://blog.csdn.net/pengyufight/article/details/77523404

    版权声明:本文为博主原创文章,转载请附上博文链接!

    这样查询的话,速度相当的慢,其中farmers表有六千多记录,farmers_images表有近20万条记录,这样的场景,可能都要查询10几分钟,IN能否让索引失效要看数据库的版本和查询的条件。解决办法是使用左连接或右连接来连表查询,这样的查询是秒级的。

    SQL:

    SELECT DISTINCT b.user_name,b.town_name FROM (SELECT DISTINCT farmer_id FROM t_farmers_images WHERE create_time>='2017-08-18') a

    LEFT JOIN t_farmers b ON a.farmer_id=b.id

    优化方式二:

    示例:就是连表查询后,过滤掉符合条件的id的数据。

    SELECT

    c2.id,

    SUM(sales_value-return_cost) sales_value,

    SUM(sales_quantity-return_quantity) sales_quantity,

    SUM(profit)/SUM(sales_value) as profit_rate

    FROM (SELECT

    product_id, sales_value, return_cost,sales_quantity, return_quantity,profit

    FROM SalesDayStats

    WHERE day BETWEEN '20190701' AND '20190731') as s

    INNER JOIN Products p ON s.product_id = p.id

    INNER JOIN Categories c ON c.id = p.spu_id

    INNER JOIN Categories c2 ON c2.id = c.second_id

    where c2.id in (1011,1012,1013,1014,1015)

    GROUP BY c2.id

    虽然只有46万的数据,但是查了10几秒,非常影响用户体验,优化方案可以类似于方式一那种使用左连接

    优化2.1---左连接

    SELECT

    c2.id,

    SUM(sales_value-return_cost) sales_value,

    SUM(sales_quantity-return_quantity) sales_quantity,

    SUM(profit)/SUM(sales_value) as profit_rate

    FROM (SELECT

    product_id, sales_value, return_cost,sales_quantity, return_quantity,profit

    FROM SalesDayStats

    WHERE day BETWEEN '20190701' AND '20190731') as s

    INNER JOIN Products p ON s.product_id = p.id

    INNER JOIN Categories c ON c.id = p.spu_id

    INNER JOIN Categories c2 ON c2.id = c.second_id

    LEFT JOIN (select id from Categories where id in(1011,1012,1013,1014,1015)) tt ON c2.id = tt.id

    GROUP BY c2.id

    查询时间瞬间降为了1s左右。

    优化2.2---使用having

    SELECT

    c2.id,

    SUM(sales_value-return_cost) sales_value,

    SUM(sales_quantity-return_quantity) sales_quantity,

    SUM(profit)/SUM(sales_value) as profit_rate

    FROM (SELECT

    product_id, sales_value, return_cost,sales_quantity, return_quantity,profit

    FROM SalesDayStats

    WHERE day BETWEEN '20190701' AND '20190731') as s

    INNER JOIN Products p ON s.product_id = p.id

    INNER JOIN Categories c ON c.id = p.spu_id

    INNER JOIN Categories c2 ON c2.id = c.second_id

    GROUP BY c2.id HAVING c2.id in (1011,1012,1013,1014,1015)

    查询时间大概为0.8s

    如果大家有什么更好的解决方法,欢迎讨论。

    展开全文
  • 1、第一种就是文档标注 $where[] = ['in'=>['tn_user_base.id'=>$medical_number_ids]]; 2、第二种 数组方式 $where[] = ['in'=>['tn_user_base.id'=>$medical_number_ids]]; 他匹配都是...

    1、第一种就是文档中标注的

     $where[] = ['in'=>['tn_user_base.id'=>$medical_number_ids]];

    2、第二种 数组方式

    $where[] = ['in'=>['tn_user_base.id'=>$medical_number_ids]];
    1. 他匹配的都是数组
    2. $condition[] =['check_doctor_uid','in',$check_doctor_id]; // 这是错误的写法
    3. //in查询应该用whereIn
      $condition[] =['check_doctor_uid','in',$check_doctor_id]; // 错误
      // Illuminate\Database\Query\Builder关于operators定义中,并没有in
      public $operators = [
          '=', '<', '>', '<=', '>=', '<>', '!=',
          'like', 'like binary', 'not like', 'between', 'ilike',
          '&', '|', '^', '<<', '>>',
          'rlike', 'regexp', 'not regexp',
          '~', '~*', '!~', '!~*', 'similar to',
          'not similar to', 'not ilike', '~~*', '!~~*',
      ];
      
      
      //->where($condition) 这种写法有问题
    4.  

    3、可以用when方法去写 

    展开全文
  • MySQL中where条件中IN的慢查询优化我们在编写SQL查询语句时,有时候会遇到连表查询情况,有时业务场景为,要查询满足某种条件一系列id数据。优化方式一:示例:查询出指定时间之后凡是上传过图片用户所在...
  • MySQL中where条件中IN的慢查询优化我们在编写SQL查询语句时,有时候会遇到连表查询情况,有时业务场景为,要查询满足某种条件一系列id数据。优化方式一:示例:查询出指定时间之后凡是上传过图片用户所在...
  • 最近查询数据时候遇到了一个问题,百思不得其解,具体现象如下: select count(1) from idm.idm_table1_s_d where ...select count(1) from idm.idm_table1_s_d where dt = '2020-03-18' and col_1 in ('1978004...
  • 具体文档代码如下: resultType=...SELECT * FROM OTAREA where id = #{id} resultType="String"> SELECT id FROM OTAREA resultType="long"> SELECT co
  • IN 函数一般在 where 条件中使用。使用方法为: SELECT columns ...当where 条件中 IN 函数 和 and 一起使用时候,需要特别注意: 先思考一下下列两个语句查询结果是否一样 SELEC...
  • 1、对该列进行限制,超过1000以内数(自己规定),就将sql语句改为 ...2、将这些值写入一张临时表,改变in条件为select * from 临时表 update 表名 set 该列 = 修改值 from (select * from 临时表) 3、在程序...
  • 我们在写SQL时经常会用到in条件,如果in包含的值都是非NULL值,那么没有特殊的,但是如果in中的值包含null值(比如in后面跟一个子查询,子查询返回的结果有NULL值),Oracle又会怎么处理呢? 创建一个测试表t_in 1...
  • 条件语句中in后面如何跟一个从程序传过来集合,因为in后面要跟很多数据,这些数据是程序查到,请问该怎么解决。
  • 我们在写SQL时经常会用到in条件,如果in包含的值都是非NULL值,那么没有特殊的,但是如果in中的值包含null值(比如in后面跟一个子查询,子查询返回的结果有NULL值),Oracle又会怎么处理呢? 创建一个测试表t_...
  • sql 存储过程 where条件 in 字符串参数Sqlhttp://topic.csdn.net/u/20070531/11/2777896d-27c0-4ddc-9c9c-5983dfff5a30.html?110579472http://www.cnblogs.com/macroxu-1982/archive/2007/03/05/664500.html 一、...
  • 大家都知道 sql where条件中in的参数 最大为1000 如果我们要传一个大于1000值 显然是不可行这里 我们可以以十为组 来传参。List&lt;String&gt; urls=new ArrayList&lt;String&gt;(); 这里urls...
  • where 条件中 使用 instr 替代 in

    千次阅读 2017-04-08 15:43:00
    where ee.pro_ype = processType  and ee.cost_type in ( DECODE(processType,'1','1,2','2','2','') )  processType 为传进来参数 相当于根据传进来值分别得到不同查询语句: 1. select * from
  • WHERE 学号 NOT IN (SELECT 学号 FROM 学习 WHERE 课程号=‘C135’) 我疑惑是我这种做法有什么问题吗,学艺不精,请大神解答,我也不知道这样对不对,如果错,错在哪里 SELECT 学生.学号,姓名,专业 ...
  • <p>Here am stuck with the <code>or_...where_in</code>.i wrote <code>where_in</code> instead of <code>or_where_in</code> but nothing is getting displayed and am using codeigniter 3.1.5 version </div>
  • 以前毫无疑问是不支持hive的where后面in后面加子查询,甚至更早版本连in和not in都不支持,以前只能通过left join来实现,好在现在新版本支持啦,hive0.13之后支持in和not in加子查询啦!!!测试环境:hive-0.14...
  • 实战干货 case when 一般用在 select 后面或者where条件的=后面,如: select case when '${unit}'...如果type是一个特殊值时,需要使用where条件in逻辑筛选数据,那就会有下面写法: where project in (case when '$
  • <p>I have where_in condition $this->db->where_in('student_id',$arr);</code> Now I want to delete the contents present in $arr</code> from a table using this code $this->db->delete('top_...
  • gorm使用where in 条件

    2021-04-12 15:24:58
    使用一个切片来填充 ? 位置 ...db.Debug().Raw("select avg(score) as score, min(updatetime) as time from xxx where activity_id = ? and departid in (?)", activityId, sons).Scan(&score)
  • laravel5.4中orm中的wherein与多条件查询

    万次阅读 2018-04-14 01:38:18
    $array_1_11 = VenousThrombusAnswer:: where(['aa'=&gt;...whereIn('id',['47','48','49','50','51','52','53','54','55','56','57']) -&gt;get(['answer']) -&gt;toArray(); ...
  • SQL where in条件的问题

    2016-06-06 07:01:13
    php文件 $a = select name from a where id != 0; $a这个变量是数组,我想知道update的条件怎么写? $b = update b set price = 1 where name in $a
  • 点击上方“匠心零度”,选择“设为星标”做积极人,而不是积极废人来源:三哥cloud.tencent.com/developer/article/1475146这段代码应该是由程序(例如Java)中生成where条件中 1=1 之后条件是通过 if 块动态...
  • 在mybatis使用过程中,有时需要传递一个包含多个值参数...inwhere查询条件中可以使用locate函数进行查找,locate(查找字符串,源字符串) 返回值为true或false。 select fid,fname from tb_demo WHERE LOCATE(CO...
  • --在存储过程中where条件in()替代做法 DECLARE @test NVARCHAR(50) SET @test='48,49,50,51'; SELECT * FROM dbo.TbExamRecord WHERE CHARINDEX(','+CAST(reid AS NVARCHAR(10))+',',','+@test+',')>0 ...
  • 例如:SELECT … WHERE p.languages_id = 1 AND m.languages_id = 1 ANDc.languages_id = 1 AND t.languages_id = 1 AND p.products_id IN (472,474)这样查询需要20多秒,虽然在各个字段上都建立了索引。用分析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,602
精华内容 1,040
关键字:

where条件中的in