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后面的表吗?
**/
5 个解决方案
#1
子查询的a是属于子查询from后面的TABLE_C,你换成别的当然报错
#2
按道理c表没有a的话应该会报错的,你要不给个真实的环境出来,我这边试试
#3
而将子查询中的字段a改成一个
TABLE_A和TABLE_B里面没有的字段名就报错了?
如果你改成后的这个字段在3个表中都不存在 那肯定会报错,,但只要主表或从表其中一个有的话, 就不会报错。
TABLE_A和TABLE_B里面没有的字段名就报错了?
如果你改成后的这个字段在3个表中都不存在 那肯定会报错,,但只要主表或从表其中一个有的话, 就不会报错。
#4
没写别名的话,那个a就去table_a里找了
#5
三个表里面只要有都不会报错,也不算是bug 就是解析的时候不够严格。
#1
子查询的a是属于子查询from后面的TABLE_C,你换成别的当然报错
#2
按道理c表没有a的话应该会报错的,你要不给个真实的环境出来,我这边试试
#3
而将子查询中的字段a改成一个
TABLE_A和TABLE_B里面没有的字段名就报错了?
如果你改成后的这个字段在3个表中都不存在 那肯定会报错,,但只要主表或从表其中一个有的话, 就不会报错。
TABLE_A和TABLE_B里面没有的字段名就报错了?
如果你改成后的这个字段在3个表中都不存在 那肯定会报错,,但只要主表或从表其中一个有的话, 就不会报错。
#4
没写别名的话,那个a就去table_a里找了
#5
三个表里面只要有都不会报错,也不算是bug 就是解析的时候不够严格。