Maison >développement back-end >tutoriel php >mysql用了not in为什么查不出数据。
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。不可能查不出的。而且之前没事,突然就查不出了。很奇怪。
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
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 * from 试一下
不然你用select * from 试一下
如果是 sql 指令错了,那么数据库就会报错
请贴出错误信息!
如果是 sql 指令错了,那么数据库就会报错
请贴出错误信息!
那就是没有符合条件的数据喽
那就是没有符合条件的数据喽
我又没有你的数据,只听你片面的说,如何知道该怎么做?
我又没有你的数据,只听你片面的说,如何知道该怎么做?
你在哪里执行的。php 还是 mysql 客户端?
你在哪里执行的。php 还是 mysql 客户端?
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的值