如何在SQL SERVER中编写CROSS JOIN的ON条件

时间:2019-05-22 10:42:19

标签: sql-server cross-join

无法使用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

1 个答案:

答案 0 :(得分:3)

CROSS JOIN不使用ON子句。它产生笛卡尔乘积,匹配两个表中的所有记录。在极少数情况下,您实际上需要这样做。

如果要在表之间进行条件记录匹配(例如,键值匹配),则应使用INNER JOINOUTER JOIN变体之一(LEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOIN)。

可以将CROSS JOINWHERE子句进行条件记录匹配,但是在这种情况下,建议使用INNER JOIN