select id,cid,title,keywords,hits,addtime from `Articles` where id not in(4454,4453,4452,4451,4450,4449,4448,4447)  order by addtime desc ,id desc LIMIT 0 , 18
上面的语句去掉not in就有数据。这是为什么。 数据库里有4000多条数据,编号从 1到4454。不可能查不出的。而且之前没事,突然就查不出了。很奇怪。

解决方案 »

  1.   

    select id,cid,title,keywords,hits,addtime from `Articles` where id not in('4454','4453','4452','4451','4450','4449','4448','4447')  order by addtime desc ,id desc LIMIT 0 , 18
      

  2.   

    还是不行,刚找了下,找到原因了。我不查keywords字段就可以。但不知道为什么这样。
      

  3.   

    还是不行,刚找了下,找到原因了。我不查keywords字段就可以。但不知道为什么这样。,但是如果我全部去掉只查keywords也可以查出来。这是什么情况呢?
      

  4.   

    不然你用select * from 试一下
      

  5.   

    如果是 sql 指令错了,那么数据库就会报错
    请贴出错误信息!
      

  6.   

    我上面说啦。数据库里有4000多条数据,编号从 1到4454。不可能查不出的 所以不可能查不出的。
    select id,cid,title,keywords,hits,addtime from `Articles` where id not in(4454,4453,4452,4451,4450,4449,4448,4447)  order by addtime desc ,id desc LIMIT 0 , 18
    这样查不出。去掉order by addtime,只根据id来排序。就能查出来。
    select id,cid,title,keywords,hits,addtime from `Articles` where id not in(4454,4453,4452,4451,4450,4449,4448,4447)  order by id desc LIMIT 0 , 18
      

  7.   

    你在哪里执行的。php 还是 mysql 客户端?
      

  8.   

    mysql的客户端。  之前是5.1的。 后来换空间了。是6.0的了。然后把数据弄过来了。然后我把6.0新增的数据加到以前的5.1里面去试试。是可以查出来的。不知道是不是版本问题
      

  9.   

    select id,cid,title,keywords,hits,addtime from `Articles` where id not in(4454,4453,4452,4451,4450,4449,4448,4447) and id is not null  order by addtime desc ,id desc LIMIT 0 , 18,你试试这个
      

  10.   

    貌似mysql中的not in 存在一定的bug。我之前也碰到过,直接not in(values) 查询出的结果是0条
    可以试试这样:
    建一个新表如ids 只有一个id字段,把4454,4453,4452,4451,4450,4449,4448,4447插进去,然后这样查询:
    select id,cid,title,keywords,hits,addtime from `Articles` where id not in(select id from ids)  order by addtime desc ,id desc LIMIT 0 , 18;
    我之前就是这么做的,希望能帮到你
      

  11.   

    或许是order by 限制了数据吧,并且还有limit的