有2个表: 表A和表B, A_pk、B_pk为各自主键字段
有这样一个SQL:
select * from A where A_pk IN (select A_pk FROM B where B_PK = 123)
有个问题:A_pk在表B中不存在
这个SQL 在plsql下执行成功,查询出表A的所有记录,但单独执行子查询select A_pk FROM B where B_PK = 123
就会报无效标识符的错误,怎么回事,有什么内幕吗?望指点
有这样一个SQL:
select * from A where A_pk IN (select A_pk FROM B where B_PK = 123)
有个问题:A_pk在表B中不存在
这个SQL 在plsql下执行成功,查询出表A的所有记录,但单独执行子查询select A_pk FROM B where B_PK = 123
就会报无效标识符的错误,怎么回事,有什么内幕吗?望指点
不知道是不是执行SQL时有什么地方跳过了判断?
==
select * from A where A_pk IN (select A.A_pk FROM B where B_PK = 123) 因为如果不特定指定表名,会认为是外层的表
你要写select * from A where A_pk IN (select B.A_pk FROM B where B_PK = 123)
一定挂
这个的查询结果是什么呢?所有A表中的A_pk?
如果where B_PK = 123 不成立,相当于写a=null,永假
不对IN里面的SQL语句执行是否正确做校验吗?