RT,今天在做数据分组的时候发现一个重大问题,不知道各位同仁有没有碰到过。表结构:
id                    sid                  pid                   ip     
自动编号            表2编号              物品编号               IP地址
sid和pid是可以重复
现在我要检索表里所有数据并按IP地址分组,假如其表中共有5条pid为222的记录并且IP地址都不重复,按如下SQL分组检索应该是pid为222的5条记录全部都出来,可是在全表检索时加group by ip则只会出2条记录,其余3条记录消失了,如果在条件里加上pid='222'即缩小检索范围时5条记录就全不出来,不知道是哪里原因。//此条只出两条为222的记录
select id,sid,pid,ip from record where sid=123456 group by ip//此条则5条全部出来
select id,sid,pid,ip from record where sid=123456 and pid='222' group by ip//此条也5条全部出来
select id,sid,pid,ip from record where sid=123456

解决方案 »

  1.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    1000%不是bug,而是你的sql水平:
    select id,sid,pid,ip from record where sid=123456 group by ip
    意味着先查询sid=123456的记录,假设是2条,然后在分组,如果这两条切好不重复,那么结果就是两条。这和5条记录ip结果不重复一点也不冲突。
      

  3.   

    数据库是mysql 5.1
    sid=123456只是范围为123456的,这5条记录的sid都是123456
    而且我分组的是IPselect id,sid,pid,ip from record where sid=123456 and pid='222' group by ip
    这条5条记录可以全部出来
      

  4.   

    可能你的索引文件有问题。
    repair table