mysql用了not in为什么查不出数据。
上面的语句去掉not in就有数据。这是为什么。 数据库里有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
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
还是不行,刚找了下,找到原因了。我不查keywords字段就可以。但不知道为什么这样。
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
还是不行,刚找了下,找到原因了。我不查keywords字段就可以。但不知道为什么这样。,但是如果我全部去掉只查keywords也可以查出来。这是什么情况呢?
不然你用select * from 试一下
不然你用select * from 试一下
也不行
如果是 sql 指令错了,那么数据库就会报错
请贴出错误信息!
如果是 sql 指令错了,那么数据库就会报错
请贴出错误信息!
没有报错。结果返回0条。
那就是没有符合条件的数据喽
那就是没有符合条件的数据喽
我上面说啦。数据库里有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
我又没有你的数据,只听你片面的说,如何知道该怎么做?
我又没有你的数据,只听你片面的说,如何知道该怎么做?
好吧。当我没问。
你在哪里执行的。php 还是 mysql 客户端?
你在哪里执行的。php 还是 mysql 客户端?
mysql的客户端。 之前是5.1的。 后来换空间了。是6.0的了。然后把数据弄过来了。然后我把6.0新增的数据加到以前的5.1里面去试试。是可以查出来的。不知道是不是版本问题
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,你试试这个
貌似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;
我之前就是这么做的,希望能帮到你
或许是order by 限制了数据吧,并且还有limit的
in 的字段中不能包含null的值,即 select * from table where filed in (select filed1 from table1 where contidtion),其中filed1 不能有null的值
推荐阅读