LEFT JOIN 使用注意事项

今天写sql用到关联,left join 走起,结果...报错了

上一下sql,(把里面的元素替换掉了,这样也能看懂不是)

		
 SELECT 
    A.aid
    B.bname
    C.csex
	D.dname
    E.ename
    F.fname
FROM 
    Admin A,
    Boy B,
    Classmate C
        
	LEFT JOIN Dog D 
	ON 
	(C.cid = D.did)
	LEFT JOIN (
	   SELECT eid,ename FROM Element
	) E
	ON(
	    C.cid = E.eid
	)
	LEFT JOIN Friend F
    ON(
        A.aid = F.fid 
    )

让我们来看一下错误信息

1) [Code: -338, SQL State: 42972]  An ON clause associated with a JOIN operator or in a MERGE statement is not valid.. SQLCODE=-338, SQLSTATE=42972, DRIVER=4.22.29
2) [Code: -727, SQL State: 56098]  An error occurred during implicit system action type "2". Information returned for the error includes SQLCODE "-338", SQLSTATE "42972" and message tokens "42972".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.22.29

好吧,这个错误意思就是说,与JOIN操作符或MERGE语句相关联的ON子句无效。ON出问题了。

【原因】left join 是跟在一个表后面的,意思是说,在on中只能调用紧邻的表的元素,这里最后一个left join,on中调用了表A的元素,这样是错误的。

【修正】

		
 SELECT 
    A.aid
    B.bname
    C.csex
	D.dname
    E.ename
    F.fname
FROM 
    Admin A 
    LEFT JOIN Friend F
    ON(
        A.aid = F.fid 
    ),
    Boy B,
    Classmate C   
	LEFT JOIN Dog D 
	ON 
	(C.cid = D.did)
	LEFT JOIN (
	   SELECT eid,ename FROM Element
	) E
	ON(
	    C.cid = E.eid
	)
	

ok,今天就到这儿,希望明年520不加班

猜你喜欢

转载自blog.csdn.net/qq_36766417/article/details/106243265