这两个JOIN有什么区别?

时间:2017-03-19 18:50:17

标签: mysql sql database

我有以下两个SQL SELECT语句,但我无法理解他们的不同之处:

SELECT DISTINCT product.maker 
FROM product, pc 
WHERE pc.model = product.model AND 
product.maker NOT IN 
(SELECT DISTINCT product.maker 
   FROM product, laptop 
   WHERE product.model = laptop.model)

SELECT DISTINCT p.maker 
FROM Product p INNER JOIN 
 PC ON p.model = PC.model
WHERE p.maker NOT IN (SELECT ip.maker 
 FROM Laptop il INNER JOIN 
 Product ip ON il.model = ip.model
 );

编辑:数据库架构在这里 - http://www.sql-ex.ru/help/select13.php#db_1

1 个答案:

答案 0 :(得分:1)

首先明显不同的是第二个查询的子查询中缺少DISTINCT

第二个使用关键字inner join的另一个区别。

现在,编写查询的第一种方式是join关键字不存在时的经典方式。

当您有多种类型的联接时,如果使用left join等,则使用join关键字会有所帮助。

通常查询处理器将生成相同的数据库操作,因此性能相同。

相关问题