如何在OUTER JOIN语句中编写子查询
我想join两个表CUSTMR和DEPRMNT。
我需要的是:左外部连接的两个或两个以上的表在子查询中的左外部连接,如下所示:
表格:CUSTMR,DEPRMNT
查询为:
SELECT cs.CUSID ,dp.DEPID FROM CUSTMR cs LEFT OUTER JOIN ( SELECT dp.DEPID ,dp.DEPNAME FROM DEPRMNT dp WHERE dp.DEPADDRESS = 'TOKYO' ) ON ( dp.DEPID = cs.CUSID AND cs.CUSTNAME = dp.DEPNAME ) WHERE cs.CUSID != ''
这里的子查询是:
SELECT dp.DEPID, dp.DEPNAME FROM DEPRMNT dp WHERE dp.DEPADDRESS = 'TOKYO'
是否有可能在LEFT OUTER JOIN中写这样的子查询?
在DB2数据库上运行此查询时出现错误。
您需要子select上的“相关ID”(“AS SS”thingy)来引用“ON”条件中的字段。 在子select内部分配的ID在连接中不可用。
SELECT cs.CUSID ,dp.DEPID FROM CUSTMR cs LEFT OUTER JOIN ( SELECT DEPID ,DEPNAME FROM DEPRMNT WHERE dp.DEPADDRESS = 'TOKYO' ) ss ON ( ss.DEPID = cs.CUSID AND ss.DEPNAME = cs.CUSTNAME ) WHERE cs.CUSID != ''
我想你不必在这种情况下使用子查询。你可以直接离开外部joinDEPRMNT表。
在使用Left Outer Join时,不要在where条件中使用连接的RHS表中的列,否则会得到错误的输出