Sql 如果您包含一个表,但未从中选择任何内容,是否会导致笛卡尔连接?
这是笛卡尔连接吗:Sql 如果您包含一个表,但未从中选择任何内容,是否会导致笛卡尔连接?,sql,cartesian,Sql,Cartesian,这是笛卡尔连接吗: select dog_t.type dog_t.breed date_t.date from dog_t, cat_t, date_t where dog_t.date_key=date_t.date_key 包含cat_t表是否会导致笛卡尔连接。。。因为它没有连接到任何东西?是的。您需要添加cat\t.date\u key=date\t.date\u key以避免笛卡尔连接 但是对于表cat\u t和dog\u t,仍然存在交叉连接问题。我认为您应该从每个表中合并一个单独
select
dog_t.type
dog_t.breed
date_t.date
from
dog_t,
cat_t,
date_t
where
dog_t.date_key=date_t.date_key
包含cat_t表是否会导致笛卡尔连接。。。因为它没有连接到任何东西?是的。您需要添加
cat\t.date\u key=date\t.date\u key
以避免笛卡尔连接
但是对于表
cat\u t
和dog\u t
,仍然存在交叉连接问题。我认为您应该从每个表中合并一个单独的select。有关更多信息,请参见此问题:这是一个纯粹的假设示例。我想我只是不明白为什么笛卡尔定律会发生。。。sql是否只是它不需要的缓冲区字段?@tylercomp我明白你的意思。但你真的不需要吗?想象一下,如果出于某种黑暗的原因,您需要结果中隐含的cat\t
信息(添加重复出现的cat\t行)是的,这绝对是一种不好的做法,我只是好奇它实际上会导致笛卡尔连接。帮助我稍微了解一下sql是如何工作的。谢谢,谢谢你的回答!查询中的两个表将导致笛卡尔连接,这就是您必须添加条件的原因。我想说的是笛卡尔连接是sql的工作方式。