我在练习中有几张桌子,我们称之为动物,奖品和展览。
当我写下面简单的查询
SELECT animals.name FROM animals;
我得到8个结果,所有名字来自动物表。
然而,当我写
SELECT animals.name FROM animals, exhibitions, prizes;
我得到了六百多个结果,所有这些都来自动物表,只是多次。 为什么会这样?我在SELECT命令中指定了列和表。我不想要其他表中的任何数据。
只有表动物有一个名为name的列。
编辑:对不起我问了。
答案 0 :(得分:1)
您正在执行工会加入,这会加倍'所有表中的元组,无论它们是否具有公共字段。您需要在SQL中指定连接字段,否则您将获得此类连接。
答案 1 :(得分:0)
当你加入几张桌子时,你会得到所有桌子的结果,在你的例子中你不仅有动物桌,你还有展览和奖品。
解决这个问题,使用一个特定的条件示例..其中animal.name = exhibitions.place
阅读更多关于来自oracle document(左连接,外连接)的连接,这非常有帮助