digdeep

凡是过去,皆是序幕。Read the fucking manual and source code.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
SELECT * FROM USER WHERE orgid IN (SELECT orgid FROM org WHERE `name` LIKE '%xxx%' ) 

 user 表有 orgid 字段, org 表没有 orgid 字段,但是上面的查询不会报错!!!

而下面的查询会报错:

 原因是,user 表中有个 orgid 字段,如果我们把 第一个查询中的 orgid 改成一个 user 表没有的字段,他就会报错了:

所以 MySQL 的语法解析器存在bug。

绕过这个问题的办法:

子查询里面需要带上 表名前置,指定是查询那个表的字段。

正确的SQL:

 

posted on 2020-04-10 21:56  digdeep  阅读(221)  评论(0编辑  收藏  举报
不懂数据库和Web安全的架构师不是一个好的程序员。