mysql用了not in为什么查不出数据。

acol 2013-07-18 01:04:01
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。不可能查不出的。而且之前没事,突然就查不出了。很奇怪。
...全文
775 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31900527 2015-10-10
  • 打赏
  • 举报
回复
最后的回复,两年的帖子了,呵呵
july28 2015-09-17
  • 打赏
  • 举报
回复
in 的字段中不能包含null的值,即 select * from table where filed in (select filed1 from table1 where contidtion),其中filed1 不能有null的值
白熊2021 2013-07-21
  • 打赏
  • 举报
回复
或许是order by 限制了数据吧,并且还有limit的
acol 2013-07-19
  • 打赏
  • 举报
回复
顶顶顶。。。。。
ohmygirl 2013-07-19
  • 打赏
  • 举报
回复
貌似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; 我之前就是这么做的,希望能帮到你
YukeySnow 2013-07-19
  • 打赏
  • 举报
回复
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,你试试这个
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 12 楼 jordan102 的回复:
你在哪里执行的。php 还是 mysql 客户端?
mysql的客户端。 之前是5.1的。 后来换空间了。是6.0的了。然后把数据弄过来了。然后我把6.0新增的数据加到以前的5.1里面去试试。是可以查出来的。不知道是不是版本问题
一起混吧 2013-07-18
  • 打赏
  • 举报
回复
你在哪里执行的。php 还是 mysql 客户端?
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
我又没有你的数据,只听你片面的说,如何知道该怎么做?
好吧。当我没问。
xuzuning 2013-07-18
  • 打赏
  • 举报
回复
我又没有你的数据,只听你片面的说,如何知道该怎么做?
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
那就是没有符合条件的数据喽
我上面说啦。数据库里有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
xuzuning 2013-07-18
  • 打赏
  • 举报
回复
那就是没有符合条件的数据喽
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
如果是 sql 指令错了,那么数据库就会报错 请贴出错误信息!
没有报错。结果返回0条。
xuzuning 2013-07-18
  • 打赏
  • 举报
回复
如果是 sql 指令错了,那么数据库就会报错 请贴出错误信息!
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 4 楼 none01 的回复:
不然你用select * from 试一下
也不行
怪才 2013-07-18
  • 打赏
  • 举报
回复
不然你用select * from 试一下
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 1 楼 changjay 的回复:
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也可以查出来。这是什么情况呢?
acol 2013-07-18
  • 打赏
  • 举报
回复
引用 1 楼 changjay 的回复:
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

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧