Mysql 这两个连接之间有什么区别?
我有以下两条SQL SELECT语句,无法理解它们的不同之处:Mysql 这两个连接之间有什么区别?,mysql,sql,database,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 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)
及
编辑:数据库模式在这里-所以第一个明显的区别是在第二个查询的子查询中缺少DISTINCT 另一个区别是第二个使用关键字internaljoin 现在,当join关键字不存在时,编写查询的第一种方法是经典方法 当您有多种类型的连接(如左连接等)时,使用join关键字会有所帮助
通常查询处理器将生成相同的数据库操作,因此性能将相同。隐式连接Q1更复杂,以保持可读性,最好使用内部联接或左联接,即使它们将返回相同的结果。隐式联接已被一些供应商(如Sql)弃用Server@CodeIsLife但它们有何不同。为什么它们给出不同的结果?将内部联接替换为左联接这将返回相同的结果请发布您的表结构第一个查询仍然可以使用别名命名约定,方法是从product、pc更改为product p, pc@SatishGarg1,2中的x和1,1,2,2中的x没有区别。我相信我记得以前读过关于差异的文章,这也与数据库引擎的性能有很大关系。
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
);