如何做网站新手引导,渭南建设用地规划查询网站,电子商务基础知识,instagram wordpressINNER JOIN、LEFT JOIN 和 RIGHT JOIN 都是多表连接的不同方式#xff0c;它们的主要区别在于它们如何处理表之间不匹配的数据。下面分别介绍它们的区别。 目录
一.多表连接查询
INNER JOIN#xff08;内连接#xff09;
LEFT JOIN#xff08;左连接#xff09;
RIGHT…
INNER JOIN、LEFT JOIN 和 RIGHT JOIN 都是多表连接的不同方式它们的主要区别在于它们如何处理表之间不匹配的数据。下面分别介绍它们的区别。 目录
一.多表连接查询
INNER JOIN内连接
LEFT JOIN左连接
RIGHT JOIN右连接
二.区别
三.自连接 一.多表连接查询
▐ INNER JOIN内连接
当你在使用 JOIN 时不明确指定是 LEFT JOIN 还是 RIGHT JOINSQL 默认会执行 INNER JOIN即内连接。
工作原理只返回在两个表中都有匹配记录的行。如果某一行在其中一个表中没有匹配的记录它将不会出现在结果集中。特点只返回匹配的记录。
例子 Product表 product_idproduct_name1Laptop2Smartphone3Tablet Sales表 sale_idproduct_idyearprice1120231000222023800 INNER JOIN查询SQL语句 SELECT Product.product_name, Sales.year, Sales.price
FROM Product
INNER JOIN Sales
ON Product.product_id Sales.product_id; 结果 product_nameyearpriceLaptop20231000Smartphone2023800
注意Tablet 没有出现在结果中因为它在 Sales 表中没有匹配的销售记录。 ▐ LEFT JOIN左连接
工作原理返回左表的所有记录即使右表中没有匹配的记录。如果右表中没有对应的行结果中的右表字段将会是 NULL。特点返回左表的所有记录以及右表中匹配的数据。
例子 LEFT JOIN查询SQL语句 SELECT Product.product_name, Sales.year, Sales.price
FROM Product
LEFT JOIN Sales
ON Product.product_id Sales.product_id; 结果 product_nameyearpriceLaptop20231000Smartphone2023800TabletNULLNULL
注意Tablet 出现在结果中但它在 Sales 表中没有对应的销售记录因此 year 和 price 显示为 NULL。 ▐ RIGHT JOIN右连接
工作原理返回右表的所有记录即使左表中没有匹配的记录。如果左表中没有对应的行结果中的左表字段将会是 NULL。特点返回右表的所有记录以及左表中匹配的数据。
例子 RIGHT JOIN查询SQL语句 SELECT Product.product_name, Sales.year, Sales.price
FROM Product
RIGHT JOIN Sales
ON Product.product_id Sales.product_id; 结果 product_nameyearpriceLaptop20231000Smartphone2023800
注意这个例子中的 RIGHT JOIN 和 INNER JOIN 的结果相同因为 Sales 表中的所有 product_id 在 Product 表中都有匹配项。如果 Sales 表中有多余的记录RIGHT JOIN 会包含它们且 Product 表的字段为 NULL。 二.区别
JOIN 类型描述结果返回的数据INNER JOIN只返回两个表中都存在匹配数据的记录。仅匹配的行LEFT JOIN返回左表的所有数据即使右表中没有匹配的记录右表的列会为 NULL。左表的所有行RIGHT JOIN返回右表的所有数据即使左表中没有匹配的记录左表的列会为 NULL。右表的所有行
INNER JOIN左表和右表中都匹配的部分。LEFT JOIN左表的所有部分即使右表没有匹配也显示 NULL。RIGHT JOIN右表的所有部分即使左表没有匹配也显示 NULL。
选择哪种 JOIN 方式取决于希望在查询中保留哪些表的数据。如果想要保留所有的左表数据使用 LEFT JOIN如果想要保留所有右表数据使用 RIGHT JOIN如果只想要两者都有匹配的数据使用 INNER JOIN。 三.自连接
平常可能还会用到自连接就像下题这样我们需要在这个表中对比不同行的数据就需要使用自连接 就像这里为这个表使用俩个别名通过 join 来完成
SELECTW1.id
FROM Weather W1
JOINWeather W2
ONDATEDIFF(W1.recordDate, W2.recordDate) 1
WHEREW1.Temperature W2.Temperature本次的分享就到此为止了希望我的分享能给您带来帮助创作不易也欢迎大家三连支持你们的点赞就是博主更新最大的动力如有不同意见欢迎评论区积极讨论交流让我们一起学习进步有相关问题也可以私信博主评论区和私信都会认真查看的我们下次再见