无法使用ON子句编写Join条件。
这正在工作:
SELECT STUDENT.STD_NAME,CLASS_SUBJECT.SUB_NAME
FROM STUDENT CROSS JOIN CLASS_SUBJECT
WHERE STUDENT.CLS_ID=CLASS_SUBJECT.CLS_ID
这不起作用:
SELECT STUDENT.STD_NAME,CLASS_SUBJECT.SUB_NAME
FROM STUDENT CROSS JOIN CLASS_SUBJECT ON STUDENT.CLS_ID=CLASS_SUBJECT.CLS_ID
答案 0 :(得分:3)
CROSS JOIN
不使用ON
子句。它产生笛卡尔乘积,匹配两个表中的所有记录。在极少数情况下,您实际上需要这样做。
如果要在表之间进行条件记录匹配(例如,键值匹配),则应使用INNER JOIN
或OUTER JOIN
变体之一(LEFT OUTER JOIN
,RIGHT OUTER JOIN
,FULL OUTER JOIN
)。
可以将CROSS JOIN
与WHERE
子句进行条件记录匹配,但是在这种情况下,建议使用INNER JOIN
。