MySQL的语法解析 bug 一例

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:

原文地址:https://www.cnblogs.com/digdeep/p/12676427.html