Mysql 在select语句中获取重复值
我创建了两个表customer和customer\u address\u details,如下所示。我将customer_id作为customer表中customer_地址的外键Mysql 在select语句中获取重复值,mysql,sql,Mysql,Sql,我创建了两个表customer和customer\u address\u details,如下所示。我将customer_id作为customer表中customer_地址的外键 Customer Table: +-------------+---------------+--------------+ | CUSTOMER_ID | CUSTOMER_NAME | CUSTOMER_DOB | +-------------+---------------+--------------+ |
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 |
+------------+-------------------------+--------------+---------------+-----------------+-------------+
当我给出以下查询时,它会显示重复的行
从客户a、客户地址b中选择a.客户名称、b.地址、街道,其中a.客户id=1
+---------------+-------------------------+
| customer_name | address_street |
+---------------+-------------------------+
| PHILLIP | 12345 mlk pkwy |
| PHILLIP | 12345 main st |
+---------------+-------------------------+
您能告诉我,为什么即使我要求为客户选择地址,它也会给出重复的行吗
这是我的表格说明
+---------------+-------------+------+-----+---------+-------+
| 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, 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;
这将表明您希望聚合表并从这个新关系返回行
来源:您应该加入表格:
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;
这将表明您希望聚合表并从这个新关系返回行
来源:您需要加入表。试试这个:
Select C.Customer_name, B.ADDRESS_STREET
from Customer C
join Customer_Address B on C.customer_id = B.Customer_id
where C.Customer_id = 1
你需要加入表格。试试这个:
Select C.Customer_name, B.ADDRESS_STREET
from Customer C
join Customer_Address B on C.customer_id = B.Customer_id
where C.Customer_id = 1
我更新了select语句,它运行良好。谢谢。从技术上讲,每个地址都与一位客户匹配:)@arabind,有几个很好的理由可以解释为什么您总是喜欢EdmCoff推荐的内部连接语法。广义地说,在使用现代join语句时,很难犯导致您提出这个问题的错误(我们称之为笛卡尔积,其中一个表中的行最终连接到另一个表中不相关的行),它更新了我的select语句,效果很好。谢谢。从技术上讲,每个地址都与一位客户匹配:)@arabind,有几个很好的理由可以解释为什么您总是喜欢EdmCoff推荐的内部连接语法。广义地说,在使用现代连接语法时,很难犯导致您提出这个问题的错误(我们称之为笛卡尔积,其中一个表中的行最终连接到另一个表中不相关的行)