关于sql查询in里面的sql不成立却不报错问题
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')
所以没有 起到过滤作用
希望能对你们有所帮助
相关推荐
sql in,exists,not in,not exists区别
如果子查询返回结果集,则条件成立,否则不成立。其基本语法为:`EXISTS (<query>)`其中,`<query>` 是子查询语句。如果子查询返回结果集,则条件成立,否则不成立。
Mybatis plus中使用in查询出错如何解决
解决方法要解决这个问题,可以通过自定义SQL语句来实现in查询。
Sql Server参数化查询之where in和like实现详解
查询,且不需要使用字符串参数。
oracle sql in 连接大于1000报错解决办法
在Oracle SQL中,当尝试使用`IN`子句连接超过1000个值时,可能会遇到性能问题并导致错误。这是因为Oracle数据库对一次性处理大量值的限制,通常对于这样的查询,建议采用分批处理或优化查询
将string数组转化为sql的in条件用sql查询
假设我们有表`tableName`,列`id`,我们想查询`id`为4、5或6的所有行,SQL语句将写为:```sqlSELECT * FROM tableName WHERE id IN ('4',


基础和管理
