查询返回不同的结果,具体取决于FROM中的表数

时间:2016-01-11 12:15:41

标签: sql oracle

我在练习中有几张桌子,我们称之为动物,奖品和展览。

当我写下面简单的查询

SELECT animals.name FROM animals;

我得到8个结果,所有名字来自动物表。

然而,当我写

SELECT animals.name FROM animals, exhibitions, prizes;

我得到了六百多个结果,所有这些都来自动物表,只是多次。 为什么会这样?我在SELECT命令中指定了列和表。我不想要其他表中的任何数据。

只有表动物有一个名为name的列。

编辑:对不起我问了。

2 个答案:

答案 0 :(得分:1)

您正在执行工会加入,这会加倍'所有表中的元组,无论它们是否具有公共字段。您需要在SQL中指定连接字段,否则您将获得此类连接。

答案 1 :(得分:0)

当你加入几张桌子时,你会得到所有桌子的结果,在你的例子中你不仅有动物桌,你还有展览和奖品。

解决这个问题,使用一个特定的条件示例..其中animal.name = exhibitions.place

阅读更多关于来自oracle document(左连接,外连接)的连接,这非常有帮助