[英]Will Inner join allow duplicates?
if join two tables using inner join method will it return duplicate values?如果使用 inner join 方法连接两个表,它会返回重复值吗?
Here is an example with duplicate rows in both tables.这是两个表中都有重复行的示例。
select * from customers;
id | name | age | address
----+-------------+-----+-----------
1 | Ramesh | 32 | Ahmedabad
2 | Khilan | 25 | Delhi
3 | kaushik | 23 | Kota <-- id 3 "kaushik"
3 | kaushik_two | 23 | Ahmedabad <-- appears twice
4 | Chaitali | 25 | Mumbai
5 | Hardik | 27 | Bhopal
6 | Komal | 22 | MP
7 | Muffy | 24 | Indore
(8 rows)
select * from orders;
oid | date | customer_id | amount
-----+---------------------+-------------+--------
102 | 2009-10-08 00:00:00 | 3 | 3000 <-- reference to customer 3
100 | 2009-10-08 00:00:00 | 3 | 1500 <-- also appears twice
101 | 2009-11-20 00:00:00 | 2 | 1560
103 | 2008-05-20 00:00:00 | 4 | 2060
104 | 2022-01-01 00:00:00 | 100 | 3900
(5 rows)
Produces duplicated rows for "kaushik" and "kaushik_two".为“kaushik”和“kaushik_two”生成重复的行。
select id, name, amount, date
from customers
inner join orders on customers.id = orders.customer_id;
id | name | amount | date
----+-------------+--------+---------------------
2 | Khilan | 1560 | 2009-11-20 00:00:00
3 | kaushik | 1500 | 2009-10-08 00:00:00 <-- first pair
3 | kaushik | 3000 | 2009-10-08 00:00:00
3 | kaushik_two | 1500 | 2009-10-08 00:00:00 <-- second pair
3 | kaushik_two | 3000 | 2009-10-08 00:00:00
4 | Chaitali | 2060 | 2008-05-20 00:00:00
(6 rows)
Yes, if there are duplicate values. 是的,如果有重复值。
If you have CUSTOMERS
table: 如果您有CUSTOMERS
表:
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
and ORDERS table as follows: 和ORDERS表如下:
+-----+---------------------+-------------+--------+
| OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Then inner join will give result: 然后内部联接将产生结果:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
INNER JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
This would produce the following result: 这将产生以下结果:
+----+----------+--------+---------------------+
| ID | NAME | AMOUNT | DATE |
+----+----------+--------+---------------------+
| 3 | kaushik | 3000 | 2009-10-08 00:00:00 |
| 3 | kaushik | 1500 | 2009-10-08 00:00:00 |
| 2 | Khilan | 1560 | 2009-11-20 00:00:00 |
| 4 | Chaitali | 2060 | 2008-05-20 00:00:00 |
+----+----------+--------+---------------------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.