sql – 你可以没有ON关键字的INNER JOIN吗?
发布时间:2020-12-12 16:41:03 所属栏目:MsSql教程 来源:网络整理
导读:在调试一些Oracle代码时,我遇到了这个查询: SELECT TPM_TASK.TASKID FROM TPM_GROUP INNER JOIN TPM_USERGROUPS ON TPM_GROUP.GROUPID = TPM_USERGROUPS.GROUPID INNER JOIN TPM_TASKINNER JOIN TPM_GROUPTASKS ON TPM_TASK.TASKID = TPM_GROUPTASKS.TASKID
在调试一些Oracle代码时,我遇到了这个查询:
SELECT TPM_TASK.TASKID FROM TPM_GROUP INNER JOIN TPM_USERGROUPS ON TPM_GROUP.GROUPID = TPM_USERGROUPS.GROUPID INNER JOIN TPM_TASK INNER JOIN TPM_GROUPTASKS ON TPM_TASK.TASKID = TPM_GROUPTASKS.TASKID INNER JOIN TPM_PROJECTVERSION ON TPM_TASK.PROJECTID = TPM_PROJECTVERSION.PROJECTID AND TPM_TASK.VERSIONID = TPM_PROJECTVERSION.VERSIONID INNER JOIN TPM_TASKSTAGE ON TPM_TASK.STAGEID = TPM_TASKSTAGE.STAGEID INNER JOIN TPM_PROJECTSTAGE ON TPM_PROJECTVERSION.STAGEID = TPM_PROJECTSTAGE.STAGEID ON TPM_GROUP.GROUPID = TPM_GROUPTASKS.GROUPID 我感到困惑的是: INNER JOIN TPM_TASK 之前没有看到没有ON子句的JOIN.还有混淆的是: ON TPM_GROUP.GROUPID = TPM_GROUPTASKS.GROUPID 这似乎是一个随机的ON子句,没有任何匹配的JOIN.该查询运行没有任何错误,并返回一堆数据,所以明显的语法是完全有效的.有人可以清楚地知道这里发生了什么吗? 解决方法小宇宙…我昨天跑过一个生成这个句法的工具,相当浮躁.显然, FROM a INNER JOIN b INNER JOIN c ON (b.id = c.id) ON (a.id = c.id) 相当于一个嵌套子查询 FROM a INNER JOIN (SELECT <<list of columns>> FROM b INNER JOIN c ON (b.id=c.id)) c ON (a.id = c.id) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |