SQL查询:left join和right join

友情提示:本文数据表皆来自菜鸟教程,如有侵犯,请联系笔者进行修改。

先讲解left join:
假设有A表和B表,分别对应左右表,left和right。
A表:website表

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 天猫          | https://www.tianmao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 百度          | http://baidu.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

B表:log表

+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2020-05-10 |
|   2 |       3 |   100 | 2020-05-13 |
|   3 |       1 |   230 | 2020-05-14 |
|   4 |       2 |    10 | 2020-05-14 |
|   5 |       5 |   205 | 2020-05-14 |
|   6 |       4 |    13 | 2020-05-15 |
|   7 |       3 |   220 | 2020-05-15 |
|   8 |       5 |   545 | 2020-05-16 |
|   9 |       3 |   201 | 2020-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

使用left join来访问所有网站以及它们的访问量:

SELECT website.name, log.count, log.date
FROM website
LEFT JOIN log
ON website.id=log.site_id
ORDER BY log.count DESC;

现在讲解right join:
A表还是左边的website,B表还是右边的log。
使用right join来访问所有访问量对应的网站:

SELECT website.name,log.count,log.date
FROM website
RIGHT JOIN log
ON log.site_id=website.id
ORDER BY log.count DESC;

总结:
left就是多表查询中只要左边的数据,
right就是多表查询中只要右边的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: left joinright joinSQL 中的两种连接方式,用于将两个表中的数据进行关联查询。 left join 语法:SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column; 这条语句会返回 table1 表中所有的数据,以及 table2 表中与 table1 表中的数据匹配的数据,如果 table2 表中没有匹配的数据,则返回 NULL。 right join 语法:SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column; 这条语句会返回 table2 表中所有的数据,以及 table1 表中与 table2 表中的数据匹配的数据,如果 table1 表中没有匹配的数据,则返回 NULL。 ### 回答2: SQL语言中的left join(左连接)和right join(右连接)是用于关联两个表的查询语句。它们的使用方法如下: left join:左连接是指将左表中的所有记录与右表中的匹配记录关联在一起,即左表的所有记录都会显示出来,而右表中的匹配记录则会根据条件进行关联。使用left join的语法为: ``` SELECT 列名 FROM 左表 LEFT JOIN 右表 ON 条件 ``` 其中,左表是指要进行关联的表,右表是指与左表进行关联的表,条件是指指定关联的条件。左表的所有记录都会显示出来,无论是否与右表的记录匹配。 right join:右连接是指将右表中的所有记录与左表中的匹配记录关联在一起,即右表的所有记录都会显示出来,而左表中的匹配记录则会根据条件进行关联。使用right join的语法为: ``` SELECT 列名 FROM 左表 RIGHT JOIN 右表 ON 条件 ``` 其中,左表是指与右表进行关联的表,右表是指要进行关联的表,条件是指指定关联的条件。右表的所有记录都会显示出来,无论是否与左表的记录匹配。 左连接和右连接的区别在于显示的结果,左连接会显示左表中的所有记录,而右连接会显示右表中的所有记录。两种连接方式都适用于需要关联两个表并显示所有相关记录的情况。 ### 回答3: SQL (Structured Query Language) 是一种用于管理和操作关系数据库的编程语言。在 SQL 中,我们可以使用不同的 JOIN 操作将多个表连接在一起。LEFT JOINRIGHT JOIN 是其中的两种常用的连接操作。 LEFT JOINLEFT JOIN 主要用于从左表中选择所有的记录,并将右表中符合连接条件的记录与之关联。左表的每一条记录都会被包含在结果集中,而右表中没有匹配的记录将被填充为 NULL。 语法如下: SELECT 列名 FROM 左表 LEFT JOIN 右表 ON 连接条件; 举个例子,假设我们有两个表 A 和 B,需要根据某个共同的列进行连接,我们可以使用以下 SQL 语句: SELECT A.id, A.name, B.description FROM A LEFT JOIN B ON A.id = B.id; 这个查询将返回表 A 中的所有记录,并将符合连接条件的 B 表中的记录与之关联。 RIGHT JOINRIGHT JOINLEFT JOIN 原理相似,不同之处在于它选择右表中的所有记录,并将左表中符合连接条件的记录与之关联。右表的每一条记录都会被包含在结果集中,而左表中没有匹配的记录将被填充为 NULL。 语法如下: SELECT 列名 FROM 左表 RIGHT JOIN 右表 ON 连接条件; 例如,我们可以使用以下 SQL 语句来进行连接: SELECT A.id, A.name, B.description FROM A RIGHT JOIN B ON A.id = B.id; 这个查询将返回表 B 中的所有记录,并将符合连接条件的 A 表中的记录与之关联。 总结: LEFT JOINRIGHT JOINSQL 中常用的连接操作,分别用于选择左表或右表中的所有记录并与另一张表中的符合条件的记录进行关联。通过合理使用这两种连接操作,我们可以更灵活地处理和查询多张表中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值