我创建了两个表 customer 和 customer_address_details,如下所示。我有 customer_id 作为客户表中 customer_address 的外键。
Customer Table:
+-------------+---------------+--------------+
| CUSTOMER_ID | CUSTOMER_NAME | CUSTOMER_DOB |
+-------------+---------------+--------------+
| 1 | PHILLIP | 1983-01-05 |
| 2 | ROBERT | 1981-01-05 |
+-------------+---------------+--------------+
Customer_Address Table:
+------------+-------------------------+--------------+---------------+-----------------+-------------+
| ADDRESS_ID | ADDRESS_STREET | ADDRESS_CITY | ADDRESS_STATE | ADDRESS_ZIPCODE | CUSTOMER_ID |
+------------+-------------------------+--------------+---------------+-----------------+-------------+
| 1 | 12345 mlk pkwy | san Antonio | TEXAS | 75025 | 1 |
| 2 | 12345 main st | Austin | TEXAS | 75035 | 2 |
+------------+-------------------------+--------------+---------------+-----------------+-------------+
当我给出以下查询时,它显示重复的行。
select a.customer_name,b.address_street from customer a, customer_address b where a.customer_id=1;
+---------------+-------------------------+
| customer_name | address_street |
+---------------+-------------------------+
| PHILLIP | 12345 mlk pkwy |
| PHILLIP | 12345 main st |
+---------------+-------------------------+
你能告诉我为什么即使我要求为 customer_id=1 选择地址,它也会给出重复的行吗?
这是我的表格描述
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| CUSTOMER_ID | int(11) | NO | PRI | NULL | |
| CUSTOMER_NAME | varchar(50) | YES | | NULL | |
| CUSTOMER_DOB | date | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| ADDRESS_ID | int(11) | NO | | NULL | |
| ADDRESS_STREET | varchar(50) | YES | | NULL | |
| ADDRESS_CITY | varchar(30) | YES | | NULL | |
| ADDRESS_STATE | varchar(30) | YES | | NULL | |
| ADDRESS_ZIPCODE | int(11) | YES | | NULL | |
| CUSTOMER_ID | int(11) | NO | MUL | NULL | |
+-----------------+-------------+------+-----+---------+-------+
最佳答案
您需要一个条件来连接您的表,因此您不会让每个地址都与每个客户匹配。
有点像
select a.customer_name,b.address_street
from customer a, customer_address b
where a.customer_id=1 and a.customer_id=b.customer_id
或
select a.customer_name,b.address_street
from customer a inner join customer_address b
on a.customer_id=b.customer_id
where a.customer_id=1
关于mysql - 在 select 语句中获取重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47932355/