在查询数据库的时候出现一个这样的问题在in条件的后边范围超过1000个的时候就会抱错~
比如说SELECT *  FROM  TableA
WEHERE 字段a IN('aa','bb',.............,'ccccccc')
也就是IN后边的条件达到了1000个,这个SQL语句就会抱错,请问有什么好办法~~

解决方案 »

  1.   

    in里面的值是不是从哪里来的?如果从另一个表里面出来,应该是用连接的办法查询数据,而不用in函数
    in函数查询速度会很慢
      

  2.   

    确实是从另外一个表里拿出来的  
    但要求是将数据从另外一个表里拿出来后进行查询,我拿出来后在.net里边是一个DataTable的形式,让我我将它进行了处理,拼成了一个字符串然后直接
    放在了in后边
    而且也没有办法用连接查询的~~应为两个标在不同的数据库里~~
      

  3.   

    难道是数据库软件也不同,一个ORACLE一个SQL SERVER?
      

  4.   

    不会是sql语句的长度达到最大值了吧?报什么错??
      

  5.   


    in 列表过长, 确实是个烦人的问题, 楼主可以把这个列表拆分成几段, 比如:SELECT *  FROM  TableA
    WEHERE 字段a IN('aa','bb',.............,'ccccccc') 
    or 字段a in ('dddd', 'eeee');
      

  6.   

    8L的方法我也想到过~~也觉得是一种可行的方法,看看还有没有别的方法~~9L要得错误信息在7L哦~~