SQL Server 中的 Cross Join 和 Inner Join 的区别

如何编写一个查询来显示 Cross Join 和 Inner Join 之间的区别,或者我们可以说,在 SQL Server 中 Cross Join 与 Inner Join 的区别,并附带一个示例。对于这个面试问题,我们将使用下面显示的数据。数据存在于 TEST 数据库中的 NewCustomer 表内。

Left Table 1

Department 表中的数据为

Right Table Records 2

SQL Server 中的 Cross Join 和 Inner Join 的区别

SQL Server Cross Join 和 Inner Join 的定义是

  • INNER JOIN:如果两个表中的列至少有一个匹配项,则返回两个表中都存在的记录(或行)。
  • CROSS JOIN:它返回两个表的笛卡尔积。笛卡尔积的意思是表 1 中的行数乘以表 2 中的行数。

SQL Inner Join

下面的 INNER JOIN 查询将显示 Employees 和 Department 表中存在的所有列,以及匹配的行。

-- Example for Cross Join Vs Inner Join in SQL Server
USE [SQLTEST]
GO
SELECT Cust.[FirstName] AS [First Name]
      ,Cust.[LastName] AS [Last Name]
      ,Cust.[Education]
      ,Cust.[Occupation]
      ,Dept.[DepartmentName] AS [Department Name]
      ,Cust.[YearlyIncome]
FROM [NewCustomers] AS Cust
INNER JOIN
     [Department] AS Dept ON
      Cust.[DeptID] = Dept.[DeptID]
Cross Join Vs Inner Join 1

SQL Cross Join 示例

下面的 CROSS JOIN 查询将显示 Employees 和 Department 表中存在的列的笛卡尔积。

-- Example for Cross Join Vs Inner Join in SQL Server
USE [SQLTEST]
GO
SELECT Cust.[FirstName] AS [First Name]
      ,Cust.[LastName] AS [Last Name]
      ,Cust.[Education]
      ,Cust.[Occupation]
      ,Dept.[DepartmentName] AS [Department Name]
      ,Cust.[YearlyIncome]
FROM [NewCustomers] AS Cust
CROSS JOIN
     [Department] AS Dept
Cross Join Vs Inner Join Example 2

如果观察上面的 SQL Server 截图,它显示了 80 条记录。这意味着 NewCustomers 表中的 10 行乘以 Department 表中的 8 行。