码迷,mamicode.com
首页 > 数据库 > 详细

mysql

时间:2014-07-22 08:37:37      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:http   使用   数据   art   问题   re   

今天写了个sql,发现查询的数据有问题。sql如下:

select * from t where field<>‘aaa‘

数据库中,该字段某些行是自动填充的,为NULL。但是使用该语句查询,却没有包含这些数据。

之前对NULL的理解是,NULL不等于任何东西,包括NULL本身,所以用不等于NULL的时候,返回的应该是TRUE才对。

百度之后发现下面这篇文章,NULL不能和任何数据做比较。

http://jingyan.baidu.com/article/9113f81b2adc882b3214c7cb.html

使用如下sql语句是没有问题的:

select * from t where id in(select id from t where xxx=1)

但是换成更新语句,就有问题了:

delete from t where id in(select id from t where xxx=1)
update t set xxx=2 where id in(select id from t where xxx=1)

因为msyql更新数据库时,子查询中的表不能和更新表为同一个表。解决这个问题的办法是,把子查询变成孙子查询,即在嵌套一层查询。

delete from t where id in(select id from (select id from t where xxx=1) x)


mysql,布布扣,bubuko.com

mysql

标签:http   使用   数据   art   问题   re   

原文地址:http://my.oschina.net/qii/blog/288021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!