文档章节

子查询中包含不存在的列--居然不是bug!

威武不能笑
 威武不能笑
发布于 2015/04/23 19:36
字数 189
阅读 131
收藏 10

1.现象

create table a as
(select 1 as col_a);
create table b as
(select 2 as col_b)

 select *
 from a
 where col_a in (select col_a from b)

其中,col_a只存在于table_a中,table_b中没有该字段,整条语句的结果是可以成功执行!


2.原因:

    这个问题比较困惑,网上搜到的原因是“当子查询中的列名不存在时,自动向外层寻找”。

也就是说,上面的查询实际上被解释成了

select *
 from a
 where col_a in (col_a)

   相当于自动屏蔽了子查询的约束条件。

3.修改:

    为了避免这种情况发生,需要先保证子查询中的SQL能够正确运行,再查看SQL整体

© 著作权归作者所有

共有 人打赏支持
威武不能笑
粉丝 2
博文 62
码字总数 12743
作品 0
黄浦
程序员
SQL 查询语句中in与not in查出来的条数不是互补的

一、in与not in不是互补的 SQL 查询语句中in与not in查出来的条数不是互补,即用in查出来的条数不等于总数减去not in查出来的条数。 例如:数据库表中有10条记录,用select count() from per...

谢思华
2013/12/11
0
2
MySQL EXPLAIN的输出信息

MySQL EXPLAIN的输出信息 基本用法 explain article; explain select * from article a where a.author_id in (select author_id from user); 第一个相当于desc表结构。 第二个表示select查......

秋风醉了
2015/08/23
0
0
in与exist , not in与not exist 的区别

in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用...

pureboys
2015/01/23
0
0
Mysql中Explain详解

当我们使用索引的时候,通常会用explain来检查我们索引使用的情况。 id列: 这一列总是包含一个编号,标示select所属的行。如果在语句当中没有子查询或联合,那么只会有的select,于是每一个...

扬花落尽丶
2017/11/01
0
0
MySQL explain详解

例子 id SQL执行的顺序的标识 select_type 查询中每个select子句的类型 (1) SIMPLE(简单SELECT,不使用UNION或子查询等) (2) PRIMARY(查询中若包含任何复杂的子部分,最外层的select被标记为P...

乾坤刀
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
昨天
0
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
昨天
2
0
区块链100讲:UTXO 和 Account 模型对比

在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UTXO 模型,Ethereum 采用的 Account 模型,同样 CITA 也采用了 ...

HiBlock
昨天
1
0
Vue中路由管理器Vue Router使用介绍(三)

一、路由定义添加动态参数定义 1.路由定义项,使用:xx 方式 定义动态参数 { path:'/user/:id/:name', name:'user', component:()=>import('./views/User.vue') ...

tianma3798
昨天
1
0
从ibdata文件恢复mysql数据

DROP TABLE 恢复【一】 Recover InnoDB dictionary Percona Data Recovery Tool 单表恢复

IT--小哥
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部