关于sql查询in里面的sql不成立却不报错问题

Mr_FanDaDa 2022-06-23 16:14:02

SQL:select * from table_a where a_row_1 in (select a_row_1 from table_b where b_id = '123456');

单独执行括号中的select a_row_1 from table_b where b_id = '123456' 则会报错说table_b表中没有a_row_1字段
但整体执行这个SQL就可以得出结果,结果集和执行语句select * from table_a一样。

通过网上寻找和测试发现,产生这个的原因是因为 第一个里面的a_row_1值会把第二个的a_row_1覆盖。

(select a_row_1 from table_b where b_id = '123456')
首先 a_row_1 是从 table_a 表中查到的值
比如 a_row_1 = 'Chinese'
那么在执行(select a_row_1 from table_b where b_id = '123456') 的时候
就变成了 (select 'Chinese' from table_b where b_id = '123456')
所以没有 起到过滤作用

希望能对你们有所帮助

...全文
336 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧