从表 1、表 2 中选择

新手上路,请多包涵

我找到了以下查询,如果有人可以帮助向我解释这意味着什么,我将不胜感激。

 select * from table1, table2

原文由 Asiri Dissanayaka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
2 个回答

这称为 CROSS JOIN 但在 FROM 子句中使用带有 , 的旧语法。我的建议是不要使用旧语法,在这里坚持使用 JOIN

它产生一个笛卡尔积,因此结果集中的行数将是来自 table1 的行数乘以来自 table2 的行数(假设在 WHERE 子句)。它有效地将来自 --- 的每一行与来自 table1 的行 table2

下面的查询是等价的,但明确 JOIN 操作将数据检索的约束逻辑(通常放在 WHERE 子句中)与连接存储在不同表中的相关数据的逻辑(在 FROM 子句):

 SELECT *
FROM table1
CROSS JOIN table2

考虑一个示例,其中 table1 有 8 行,而 table2 有 5 行。在输出中,您将获得 40 行(8 行 * 5 行),因为它将来自两个源(表)的所有行配对。

原文由 Kamil Gosciminski 发布,翻译遵循 CC BY-SA 4.0 许可协议

您将得到 table1 中的所有行乘以 table2 中的所有行,并将根据两个表的列显示。正如@sgeddes 指出的那样,创建一个笛卡尔积。

原文由 Just Rudy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进