Mysql 多对多关系中的重复行

Mysql 多对多关系中的重复行,mysql,sql,Mysql,Sql,在这个场景中,我有多对多关系问题 表:客户/主机 +---------+-----------+ | cust_id | cust_code | +---------+-----------+ | 1 | S00333 | +---------+-----------+ 表:客户供应链 +----------------+-----------+-------------------+ | supply_cust_id | cust_code | supplye_cust_c

在这个场景中,我有多对多关系问题

表:客户/主机

+---------+-----------+
| cust_id | cust_code |
+---------+-----------+
|       1 | S00333    |
+---------+-----------+
表:客户供应链

+----------------+-----------+-------------------+
| supply_cust_id | cust_code | supplye_cust_code |
+----------------+-----------+-------------------+
|              1 | S00333    | HI00001           |
|              2 | S00333    | MA00010           |
+----------------+-----------+-------------------+
表:客户车辆

+----------------+-----------+------------------+
| cust_vehicl_id | cust_code | vehicle_model_id |
+----------------+-----------+------------------+
|              1 | S00333    |              161 |
|              2 | S00333    |              162 |
+----------------+-----------+------------------+
Mysql查询是:

SELECT
  cv.vehicle_model_id,
  csc.supply_cust_code AS suppl_code
FROM customer_master cm
  LEFT JOIN customer_supply_chain csc
    ON csc.cust_code = cm.cust_code
  LEFT JOIN customer_vehicle cv
    ON cv.cust_code = cm.cust_code
WHERE cm.cust_code = 'S00333'
查询结果

+------------------+------------------+
| vehicle_model_id | supply_cust_code |
+------------------+------------------+
|              161 | HI00001          |
|              162 | HI00001          |
|              161 | MA00010          |
|              162 | MA00010          | 
+------------------+------------------+
我们的欲望输出是

+------------------+------------------+
| vehicle_model_id | supply_cust_code |
+------------------+------------------+
|              161 | HI00001          |
|              162 | MA00010          |
+------------------+------------------+
问题在于,每一行的供应客户代码和车辆型号id都会重复出现

我们尝试使用distinct和group by以及堆栈溢出中显示的其他修复程序,但不起作用

如果我们使用group by,因此无法获取所有数据,并且我们不想使用group_concat,则无法纠正该问题,
我们只是尝试获取所有行但不重复

我不知道为什么要获取这些重复项,因为示例数据不支持它,但您可以尝试使用SELECT DISTINCT:

或者,您可以尝试按型号ID分组并提供客户代码:

SELECT cv.vehicle_model_id,
       csc.supply_cust_code AS suppl_code
FROM customer_master cm
LEFT JOIN customer_supply_chain csc
    ON csc.cust_code = cm.cust_code
LEFT JOIN customer_vehicle cv
    ON cv.cust_code = cm.cust_code
WHERE cm.cust_code = 'S00333'
GROUP BY cv.vehicle_model_id,
         csc.supply_cust_code

我不知道您为什么会得到这些副本,因为示例数据不支持它,但您可以尝试使用SELECT DISTINCT:

或者,您可以尝试按型号ID分组并提供客户代码:

SELECT cv.vehicle_model_id,
       csc.supply_cust_code AS suppl_code
FROM customer_master cm
LEFT JOIN customer_supply_chain csc
    ON csc.cust_code = cm.cust_code
LEFT JOIN customer_vehicle cv
    ON cv.cust_code = cm.cust_code
WHERE cm.cust_code = 'S00333'
GROUP BY cv.vehicle_model_id,
         csc.supply_cust_code

您想要的输出是什么?结果中没有重复项。这很正常,你有几种可能的车辆和供应商。问题是:你只想要一排什么?车辆还是供应商?但这又提出了另一个问题:应该删除哪些行?显示并解释您想要的结果。如果customer\u supply\u chain将由3行组成,而customer\u vehicle仍有2行,您希望输出哪一行?@ThomasG和@Tim Biegeleisen我更新我的问题并添加我想要的输出,请再次检查。@Sergey yes如果supplier中有max记录,则其在vehicle中不存在问题重复,您想要的输出是什么?结果中没有重复项。这很正常,你有几种可能的车辆和供应商。问题是:你只想要一排什么?车辆还是供应商?但这又提出了另一个问题:应该删除哪些行?显示并解释您想要的结果。如果customer\u supply\u chain将由3行组成,而customer\u vehicle仍有2行,您希望输出哪一行?@ThomasG和@Tim Biegeleisen我更新我的问题并添加我想要的输出,请再次检查。@Sergey yes如果supplier中有max记录,则其在vehicle中不存在问题重复,