为了账号安全,请及时绑定邮箱和手机立即绑定

请问下下面这句话的意思,看不懂啊,如果有例子就更好了

使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试一下操作:column_name IS NULL 。如果 column_name 被指定为 NOT NULL,MySQL将在找到符合连接着条件的记录后停止搜索更多的行(查找冲突)

正在回答

5 回答

在被约束为NOT NULL 的列中找到了为NULL 的记录,MySQL认为已经查找到了表中记录的最末一行。

0 回复 有任何疑惑可以回复我~

就是用内连接查找记录时设置查找条件为行名为空,而这些记录又在之前定义时被设置成了非空,那么mysql就会发现第一条和自己的查找条件冲突的数据后,停下对之后的数据的查找

0 回复 有任何疑惑可以回复我~

主要是内连接那个有点误导人

事实上不管是不是内连接的查询,

你有字段设置了非空,你去查询等于空,肯定查不到结果的嘛

搜索引擎也不会去搜索,直接返回了空

0 回复 有任何疑惑可以回复我~
explain SELECT goods_name FROM tdb_goods INNER JOIN tdb_goods_brands ON tdb_goods.brand_id = tdb_goods_brands.brand_id WHERE goods_id > 40 AND goods_name IS NULL;

前面加的explain代表分析这段查询的执行,表中goods_name字段被我设置成了NOT NULL,分析的结果是

id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra

'1', 'SIMPLE', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Impossible WHERE'

看到没,最后是Impossible WHERE,如果把goods_name字段被设置成了允许 NULL

分析结果是

# id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra

'1', 'SIMPLE', 'tdb_goods', NULL, 'range', 'PRIMARY', 'PRIMARY', '2', NULL, '1', '10.00', 'Using where'

'1', 'SIMPLE', 'tdb_goods_brands', NULL, 'eq_ref', 'PRIMARY', 'PRIMARY', '2', 'test.tdb_goods.brand_id', '1', '100.00', 'Using index'。这说明上面的Impossible WHERE是很快就被发现了,设置冲突了。而下面这个是需要做查询的。

在别处找到了一篇关于SQL查询语句执行过程的博文,大家一起看看,感觉比老师这段视频的作用好。http://www.cnblogs.com/annsshadow/p/5037667.html



2 回复 有任何疑惑可以回复我~

先看一下是不是语句中哪个单词打错了,少打或多打字母导致column对应不上。

0 回复 有任何疑惑可以回复我~
#1

sadfiy 提问者

哥们,那句话是PPT上的,我不理解那句话的意思。0.0
2017-08-07 回复 有任何疑惑可以回复我~
#2

慕莱坞602254 回复 sadfiy 提问者

出现的问题是什么能复制过来吗
2017-08-08 回复 有任何疑惑可以回复我~
#3

sadfiy 提问者 回复 慕莱坞602254

倒不是出现什么问题,就是这句话是老师视频PPT上的一句话,我不明白这句话的意思
2017-08-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

请问下下面这句话的意思,看不懂啊,如果有例子就更好了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信