在这种情况下我有多对多的关系问题
表:customer_master
+---------+-----------+
| 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 |
+------------------+------------------+
问题是每一行都由 supply_cust_code
和 vehicle_model_id
重复,
我们尝试使用 distinct 和 group by 以及其他修复方法(在堆栈溢出中显示)但不起作用,
如果我们使用 group by 所以我们无法获取所有数据并且我们不想使用 group_concat
,我们无法纠正问题,
我们只是尝试获取所有行但不重复
最佳答案
我不知道你为什么会得到这些重复项,因为示例数据不支持它,但你可以尝试使用 SELECT DISTINCT
:
SELECT DISTINCT cv.vehicle_model_id,
csc.supply_cust_code AS suppl_code
FROM ...
或者您可以尝试对模型 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
关于mysql - 多对多关系mysql中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39529095/