SQL 右连接
SQL连接用于根据给定的条件从多个表中检索记录。连接包括满足给定条件的记录,并且外连接结果是一个包含匹配和不匹配行的表。
左外连接,如前面的教程中所讨论的,用于找到左表相对于右表的并集。在本教程中,让我们讨论一下右外连接。
SQL 右连接
在SQL中,右连接或右外连接查询返回右表中的所有行,即使在左表中没有匹配。简而言之,右连接返回右表的所有值,以及左表中的匹配值,如果没有匹配的连接谓词,则返回NULL。
如果ON子句在左表中匹配零条记录; 加入仍将在结果中返回一行,但左表的每列中的值将为NULL。
语法
以下是SQL中右连接的基本语法−
示例
我们在这个示例中使用的表名为CUSTOMERS和ORDERS。
假设我们正在创建一个名为CUSTOMERS的表,其中包含了顾客的个人详细信息,包括他们的姓名、年龄、地址和薪水等等。
现在,使用INSERT语句将值插入到该表中,如下所示 –
表将被创建为−
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | MP | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
让我们创建另一个名为 ORDERS 的表,包含所做订单的详细信息以及订单日期。
使用INSERT语句,将以下值插入到此表中-
表格显示如下:
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |
103 | 2008-05-20 00:00:00 | 4 | 2060.00 |
现在,让我们使用以下的Right Join查询来连接这两个表格。
输出
这将产生以下结果-
ID | NAME | AMOUNT | DATE |
---|---|---|---|
3 | Kaushik | 3000.00 | 2009-10-08 00:00:00 |
3 | Kaushik | 1500.00 | 2009-10-08 00:00:00 |
2 | Khilan | 1560.00 | 2009-11-20 00:00:00 |
4 | Chaitali | 2060.00 | 2008-05-20 00:00:00 |
使用右连接连接多个表
与左连接类似,右连接也用于连接多个表。然而,不同之处在于第二个表作为一个整体返回,而不是第一个表。
此外,第一个表的行与第二个表的行进行匹配。如果记录没有匹配,并且第二个表的记录数大于第一个表,那么第一个表中的值将返回NULL。
语法
以下是使用右连接连接多个表的语法:
示例
在这里,让我们考虑之前创建的CUSTOMERS和ORDERS表,并使用以下查询创建一个名为EMPLOYEE的新表 –
现在,我们可以使用INSERT语句将值插入到这些空表中,如下所示-
以下是EMPLOYEE表的详细信息:
EID | EMPLOYEE_NAME | SALES_MADE |
---|---|---|
102 | SARIKA | 4500 |
100 | ALEKHYA | 3623 |
101 | REVATHI | 1291 |
103 | VIVEK | 3426 |
100 | ALEKHYA | 3456 |
以下查询使用 右联接查询 连接这三个表
通过这个查询,我们将显示顾客的id和姓名,以及订单的日期和销售该商品的员工的姓名。
结果
通过以下步骤获得结果表: ID | NAME | DATE | EMPLOYEE_NAME |
---|---|---|---|
3 | Kaushik | 2009-10-08 00:00:00 | SARIKA |
3 | Kaushik | 2009-10-08 00:00:00 | ALEKHYA |
2 | Khilan | 2009-11-20 00:00:00 | REVATHI |
4 | Chaitali | 2008-05-20 00:00:00 | VIVEK |
3 | Kaushik | 2009-10-08 00:00:00 | ALEKHYA |
右连接与WHERE子句
WHERE子句用于筛选满足指定条件的记录。该子句可以与右连接查询一起使用,对连接结果集应用某些筛选条件。
语法
当右连接与WHERE子句一起使用时的语法如下所示 −
示例
可以使用WHERE子句来过滤组合数据库表中的记录。考虑上面的两个表CUSTOMERS和ORDERS;并使用右连接查询将它们联接起来,使用WHERE子句应用一些约束条件。
输出
应用右连接的筛选条件后,结果表中包含金额大于1000.00的行-
ID | NAME | DATE | Amount |
---|---|---|---|
3 | Kaushik | 2009-10-08 00:00:00 | 3000.00 |
3 | Kaushik | 2009-10-08 00:00:00 | 1500.00 |
2 | Khilan | 2009-11-20 00:00:00 | 1560.00 |
4 | Chaitali | 2008-05-20 00:00:00 | 2060.00 |