在Mysql5.0 中In 用法的疑惑SELECT * FROM A where A.bigclass in(select arrchild from B) 这样子为什么查不到数据,但是写成SELECT * FROM A where A.bigclass in(1,2,35,5) 这样子就可以.注:select arrchild from B 的查询结果
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/24 06:44:10
在Mysql5.0 中In 用法的疑惑SELECT * FROM A where A.bigclass in(select arrchild from B) 这样子为什么查不到数据,但是写成SELECT * FROM A where A.bigclass in(1,2,35,5) 这样子就可以.注:select arrchild from B 的查询结果
在Mysql5.0 中In 用法的疑惑
SELECT * FROM A where A.bigclass in(select arrchild from B) 这样子为什么查不到数据,但是写成
SELECT * FROM A where A.bigclass in(1,2,35,5) 这样子就可以.
注:select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)
在Mysql5.0 中In 用法的疑惑SELECT * FROM A where A.bigclass in(select arrchild from B) 这样子为什么查不到数据,但是写成SELECT * FROM A where A.bigclass in(1,2,35,5) 这样子就可以.注:select arrchild from B 的查询结果
select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)
这种情况下,
执行
SELECT * FROM A where A.bigclass in(select arrchild from B)
相当于执行
SELECT * FROM A where A.bigclass in( '1,2,35,5' )
结果肯定是没有.
假如你的
select arrchild from B 的查询结果是
1
2
35
4
这样的 4 行数据.
那么
SELECT * FROM A where A.bigclass in(select arrchild from B)
就等价于
SELECT * FROM A where A.bigclass in(1,2,35,5)
如果
select arrchild from B 的查询结果是一条记录内容是一字符串(1,2,35,5)
又要实现
SELECT * FROM A where A.bigclass in(1,2,35,5) 的效果.
一个变通的办法是:
SELECT * FROM A
where
INSTR ( CONCAT ( ',' , (select arrchild from B) , ',' ),
CONCAT (',' , A.bigclass , ',' ) ) > 0