如果我们在没有任何条件的情况下包含两个表,SQL 查询的输出会是啥

Posted

技术标签:

【中文标题】如果我们在没有任何条件的情况下包含两个表,SQL 查询的输出会是啥【英文标题】:What would be output of SQL query if we include two table without any condition如果我们在没有任何条件的情况下包含两个表,SQL 查询的输出会是什么 【发布时间】:2014-10-12 06:26:42 【问题描述】:

最近我在一次采访中被问到,如果我们触发如下的 sql 查询会输出什么:

select * from table1 & table2;

这会给出输出还是错误,当我用谷歌搜索/询问某人时,我得到了不同的答案。 请详细说明。

【问题讨论】:

那个特定的语句不是一个有效的语法,会给你一个错误。但是,需要“详细说明”您要查找的内容。 这个语句甚至不是有效的语法。但假设您的意思是使用有效语法连接表 1 和表 2,您可以从这里开始了解连接:blog.codinghorror.com/a-visual-explanation-of-sql-joins 哦,当你在做的时候,为什么不简单地将它输入到 mysql 提示符中,看看会发生什么? @narendrak,查看连接,以非常清晰的方式说明,所有详细信息都在 Link 这里 【参考方案1】:

如果您将语法修改为

select * from table1, table2;

你将得到一个所有条件都为真的连接,这与两个表的笛卡尔积相同。

table1      table2
------      ------
A           1
B           2
C

结果:

A 1
A 2
B 1
B 2
C 1
C 2

【讨论】:

【参考方案2】:

如果你做对了,像这样:

select * from table1, table2;

您将得到笛卡尔积。这意味着,两个表的所有列和一个表的每一行都与另一个表的每一行连接。

【讨论】:

以上是关于如果我们在没有任何条件的情况下包含两个表,SQL 查询的输出会是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有任何重复行的情况下连接 cognos 中的两个表?

如何在没有任何重复行的情况下连接两个表中的表?

在MySQL中阻止UPDATE语句没有添加WHERE条件的发生

SQL Server:如何对两列/条件进行重复数据删除?

休眠条件:在没有映射关联的情况下加入表

SQL - 对两个表中的两列求和并写入新列