oracle-00904 标识符无效?

如图:QQ_temp和code_code是两张表,里面的字段没有问题,也一定是有结果的。第一行select可以正常运行出结果,就是这行出问题。如果写成
select * from code_kcb where kch in (select kch from QQ_Temp)
这句话执行不报错,但也没有结果。

多谢指教!

没有相同的值怎么出结果?
你认为一定有结果,可是真的没有值的话不可能出结果的,这样,你用
select a.* from code_kcb a,QQ_Temp b where a.kch=b.kch试试,如果有结果,那么有,如果没有那就没有了。追问

这样是没有结果,也不报错,我就是不明白为什么没有结果,因为两张表中一定是有相同的kch字段值的。
换言之:
select kch from QQ_Temp where kch='1234'
select kch from code_kcb where kch='1234'
这两句都会有执行结果出来的,就是混在一起写就没结果了。

追答

是不是两张表这个字段的字段类型不一致啊,比如一个是数字的,一个是字符的。

追问

也不会,复制过来的字段

追答

我说的是字段类型,比如一个是varchar2的一个是数字的。类似这种。,再就是有没有空格。好好查查

追问

谢谢你,我查到原因了,就是因为空格,单独做查询的时候,空格不影响,但是两个表的对应字段做匹配的时候,空格就影响到了。

我本想把分给你的,可是我好像不小心按错了……

追答

没事,用trim去掉空格就好了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-01
select * from code_kcb where kch in (select kch from QQ_Temp) --这语句没有问题
这句话查询没有结果说明,没有匹配上,你可以在查看下数据,看看是否是有空格之列的东西本回答被网友采纳
第2个回答  2019-11-12
你使用了oracle的保留字size和rows,不能用来作为列名,把他改成别的吧,比如items_size,items_rows,不然以后调用也很麻烦。
第3个回答  2014-08-20
select * from code_kcb k,QQ_temp t where k.kch=t.kch本回答被提问者采纳