当前位置: 代码迷 >> Sql Server >> NOT IN子查询时,子查询中字段在表中不存在时不报错解决办法
  详细解决方案

NOT IN子查询时,子查询中字段在表中不存在时不报错解决办法

热度:80   发布时间:2016-04-24 10:33:48.0
NOT IN子查询时,子查询中字段在表中不存在时不报错
本帖最后由 shuchong1983 于 2014-05-14 14:17:01 编辑

SELECT A.a,B.b FROM TABLE_A AS A
INNER JOIN TABLE_B AS B ON A.b=B.b
WHERE A.a NOT IN (SELECT a FROM TABLE_C)
/**
TABLE_C表里没有a这个字段,但是上面的语句不报错,而将子查询中的字段a改成一个
TABLE_A和TABLE_B里面没有的字段名就报错了。这是什么情况,
子查询里的字段a不是和From后面的表吗?
**/

------解决方案--------------------
而将子查询中的字段a改成一个
TABLE_A和TABLE_B里面没有的字段名就报错了?

如果你改成后的这个字段在3个表中都不存在 那肯定会报错,,但只要主表或从表其中一个有的话, 就不会报错。
------解决方案--------------------
没写别名的话,那个a就去table_a里找了
------解决方案--------------------
三个表里面只要有都不会报错,也不算是bug 就是解析的时候不够严格。
  相关解决方案