select *
from A
JOIN (
SELECT * FROM B
WHERE B.字段1=( SELECT *
FROM B
WHERE B.字段1 = A.字段1
)
)
我想问这样多括号的时候A的表里的字段还能在两个以上括号嵌套里使用么,现在根据我的测试只能在一个括号嵌套中能使用,但是两个或者两个以上就不行,问什么?我的测试结果是对的么?求认证和解答
不对吧?我的第一层数据也是关联到最外层的A表的!如果不加第二层的话是没有问题的,所以你说的join两端可以独立SELECT出来我感觉是不是不对!我只是当用第二层去关联到最外层的时候就会有问题报的是表字段无效
追答。。。你还是没明白联结的含义,你的第一层没有引用A表,ON后面只是个联结条件,你如果把ON后面的A表字段当成引用的话就错了,那个只是联结条件,表示A表和B表的哪些数据可以用于联结。
追问不是只是我写的只是我SQL的一部分,第一层其实也引用了外层的,刚才我看错了现在我看是不可以引用外层的,那我想问下我想做这种动态的怎么做那?大神教我一下,APPLY是什么?是标准SQL还是?我用的是ORACLE但希望用标准SQL,
追答如果还是不是很明白,你就当成去掉忽略on条件后,两边的查询可以独立进行select就可以进行联结。
去看看apply的用法吧,看了后你应该就明白了,我就不复制过来粘贴了,建议你同时看看独立子查询和相关子查询,理解起来是一样的。
===========================================================================
shit shit shit
我说的是sql server,apply不是标准sql,是T-SQL实现的,PL-SQL里面应该有相对应的语法吧,我百度帮你查查,你也可以自己查查,
shit啊,忘了问你用的是什么数据库了,不过join的sql标准,sql server和oracle应该是一样的,至于apply,我不清楚在oracle中是什么了。