如何在 SQL SERVER 中为 CROSS JOIN 写入 ON 条件

How to write ON condition for CROSS JOIN in SQL SERVER

无法使用 ON 子句编写连接条件。

这是有效的:

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

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

如果您希望在表之间进行条件记录匹配(例如键值匹配),您应该使用 INNER JOINOUTER JOIN 变体之一(LEFT OUTER JOINRIGHT OUTER JOIN, FULL OUTER JOIN).

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