mysql - 在 select 语句中获取重复值

标签 mysql sql

我创建了两个表 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/

相关文章:

PHP、mySQL 和 xampp 登录表单问题

c# - EntityFramework 4.1,context.Entities.Add 有时将 FK 设置为 NULL

mysql - 在创建 SQL 语句时需要帮助

MySql INSERT 忽略 DISTINCT 选择

mysql - 匹配两列之一中包含唯一值的行的第一个实例,尊重排序顺序

c# - 如何设置现有 SQL Server 数据库的所有者

php - 加速 SQL 循环

mysql - 每当包含的值为 NULL 时,SQL 查询为 SUM(expression) 返回 NULL

php - 将txt文件/数据导入到我的mysql数据库

mysql - 简单的 SQL 更新查询在小表上速度很慢