SELECT count(invoice_no)
FROM `ecs_order_info` a
WHERE (
SELECT COUNT( invoice_no ) 
FROM `ecs_order_info` b
WHERE a.invoice_no = b.invoice_no) >1  还有 in(field) 这种效率更低数据有1万多条 有没有高效的方法累

解决方案 »

  1.   

    http://www.cnblogs.com/fxgachiever/archive/2010/09/10/1823106.html
    看下这里 如果数据只是1万多条 应该非常快的
      

  2.   

    看起来你只是需要重复的no的个数,
    所以这个应该就可以了 
    select count(*)
    from (
      SELECT invoice_no
      FROM `ecs_order_info`
      group by invoice_no
      having count(*)>1
    ) tmp
    ;试一下,有什么问题上来继续讨论
      

  3.   


    -------------------
    我取得个数是用来做分页用的,具体还是要取出更多内容的。我测试少量数据的时候就可以,12000条数据,是用的多表查询,大概3.4个left join,根据主表的某个字段的值,相同数量大于1的都要取出来的、