遇到一个问题不知道是不是BUG。
有一个Equipment表  对这个表查询
SQL语句一:
查询一下符合条件的设备数目  结果是0  是我想要的结果
  select
        count(*)
    from
        t_equipment equipment0_ 
    where
        1=1 
        and (
            equipment0_.level1_id in (
                1 , -100
            )
        ) 
        and (
            equipment0_.level1_id is not null
        ) 
        and equipment0_.institute_id=1 
    order by
        equipment0_.id
SQL语句二:
查询上述条件下的 具体记录,应该是空集,因为两个SQL语句是完全一样的 只是 “select *” 与select count(*)这点区别
  select
        *
    from
        t_equipment equipment0_ 
    where
        1=1 
        and (
            equipment0_.level1_id in (
                1 , -100
            )
        ) 
        and (
            equipment0_.level1_id is not null
        ) 
        and equipment0_.institute_id=1 
    order by
        equipment0_.id
求大神为什么mysql  select  bug

解决方案 »

  1.   

    什么问题,MYSQL什么版本、表什么引擎
      

  2.   

    是一样的sql 你是连的一个库吗  请连续执行这两个sql  贴图
      

  3.   


    第二条 语句 把所有 数据库 里的 记录 都查出来了。
    Mysql  5.5  hibernate
      

  4.   


    应该不会出现这样问题
    第一:保证在同一个库上操作
    第二:排查语句(排查执行的sql语句是否一致)
          慢慢删除一个一个条件对比
    或者先执行没条件的语句对比在一个一个加条件对比
    select  count(*)   from  t_equipment ;
    select  *          from  t_equipment ;
      

  5.   


    语句我看了。。是完全样的。。就差个 count
      

  6.   

    那你先查总数的试试看这两句的结果是不是一样
    select  count(*)   from  t_equipment ;
    select  *          from  t_equipment ; 在一次把你那三个条件加上测试下
      

  7.   


    是索引的 问题额但是 索引Hibernate 自动建立的
      

  8.   

    show index from table1贴出看一下。
      

  9.   

    会,在查询时,如果能用到索引,MYSQL会使用索引,如果索引有问题,结果会有误
      

  10.   

    索引还会影响查询结果?能说下原因吗?我也求解释。。不管 顺序 怎样。。两个SQL 语句 结果集 是确定的。与执行顺序无关
    删除索引 就OK了但是 索引是Hibernate  维护的
      

  11.   

    如果是 select count(*) 其中没有任何条件, 则MYSQL会直接到索引表中对这个表的统计结果。 相当于 select st_count from the statisctics_table where tablename = 'xxx而MYSQL的索引表有时会由于各种原因导致异常。 需要进行 repair ,MYSQL也建议定期做MYISAM的维护.
      

  12.   


    我现在是  select count(*)  是正确结果。。也就是 空集select * 是查出来了 全集。。 
    //=========
    给个解决办法。。
      

  13.   


    show index from t_equipment
    贴在哪儿了?
      

  14.   


    13楼你确定这是 show index 后的结果?!
      

  15.   

    解决办法应该是引擎改成innodb的吧
      

  16.   

    你在MYSQL命令行下运行上述2个SQL,结果如何,如果正确,应该是Hibernate的问题