CROSS JOININNER JOIN之间有什么区别?

CROSS JOIN:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status], 
FROM   
    Customers 
CROSS JOIN 
    Movies

INNER JOIN:

SELECT 
    Movies.CustomerID, Movies.Movie, Customers.Age, 
    Customers.Gender, Customers.[Education Level], 
    Customers.[Internet Connection], Customers.[Marital Status]
FROM   
    Customers 
INNER JOIN 
    Movies ON Customers.CustomerID = Movies.CustomerID

哪一个更好?我为什么要用这两个呢?

推荐答案

交叉连接不会合并行,如果每个表中有100行1对1匹配,则会得到10.000个结果,Innerjoin在相同情况下只会返回100行.

这两个示例将返回相同的结果:

交叉连接

select * from table1 cross join table2 where table1.id = table2.fk_id

内部连接

select * from table1 join table2 on table1.id = table2.fk_id

使用最后一种方法

Sql相关问答推荐

提取Snowflake SQL中的嵌套键

如何以"% m—% d"格式对生日列表进行排序,以查找与今天最近的日期?

在Golang中管理数据库事务的简洁方法

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

在Postgres中实现合并功能的干净方法,因为当目标/源不匹配时

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

我希望以正确的升序获取SQL结果.怎样才能得到它们?

基于唯一值在Access查询中创建计数器

收到%1、%2或%2邮箱的唯一客户

属于(日期)范围类型及其交集的总权重​

SQL数据库规范化与数据插入

使用递归CTE在BigQuery中获取文件路径

如何判断小数点后千位是否不为0

对现有记录进行分组

试图找到两个身份列表的交集(列表的长度不同),但获取列 id 不明确?

Clickhouse:左连接表到外部数组

将一名成员金额分配给群组内的其他成员

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

如何根据与 BigQuery 中另一个表的匹配更新一个表中的列?

具有日期时间条件的存储过程