文档章节

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

威武不能笑
 威武不能笑
发布于 2015/04/23 19:36
字数 189
阅读 135
收藏 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
黄浦
程序员
私信 提问
为 MySQL 查询优化选择最佳索引

我们的许多用户、开发者和数据库管理员不断向我们的团队咨询有关 EverSQL 的索引推荐算法。 所以,我们决定写一些这方面的内容。 本教程不会详细介绍该算法的所有内部特性,而是要简单地说明...

oschina
2018/02/05
3.7K
6
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
[Mysql]Expalin执行计划

explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1、id相...

菜鸟腾飞
2018/11/26
0
0
Mysql中Explain详解

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

扬花落尽丶
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搜索引擎(Lucene-索引详解)

IndexWriter详解 问题1:索引创建过程完成什么事? 回顾架构图 Lucene索引创建API 图示 Lucene索引创建代码示例 public static void main(String[] args) throws IOException { // 创建...

这很耳东先生
8分钟前
0
0
JavaScript数据结构之栈实例用法

在本篇文章里小编给大家分享了关于JavaScript数据结构之栈实例用法内容,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 栈 先来看...

前端攻城老湿
18分钟前
0
0
springboot 使用 redis 管理session

1.pom.xml 引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency><dependency> ......

狼王黄师傅
18分钟前
0
0
Js取小数点后两位四种方法

在本篇文章里小编给大家分享了关于js取小数点后两位四种方法和实例代码,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 Javascri...

前端攻城小牛
25分钟前
0
0
js 唤端

h5页面唤起app const appDownload = () => { // 分享- 唤起 - 下载function failed() {window.location = '应用商店的scheme '}function transfer(cb) {window.location.href =......

何祯粮
25分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部