我有以下两个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
答案 0 :(得分:1)
首先明显不同的是第二个查询的子查询中缺少DISTINCT
。
第二个使用关键字inner join
的另一个区别。
现在,编写查询的第一种方式是join
关键字不存在时的经典方式。
当您有多种类型的联接时,如果使用left join
等,则使用join关键字会有所帮助。
通常查询处理器将生成相同的数据库操作,因此性能相同。