根据给出的SQL查询语句,以下是可能导致数据错乱的问题:

  1. 在子查询中,使用了GROUP BY子句来分组结果。这意味着对于每个不同的main_reason和product_skc_id组合,只能选择一个operational_progress和operational_remark的值。这可能导致丢失其他可能的operational_progress和operational_remark的组合。

  2. 在主查询中,使用了LEFT JOIN来连接原始表和子查询结果。这意味着对于每个原始表的记录,将选择与子查询结果匹配的记录。如果在子查询中找不到匹配的记录,那么将返回NULL值。这可能导致一些原始表的记录被丢弃。

要修复此问题,可以尝试以下修改:

  1. 移除子查询中的GROUP BY子句。这样可以选择每个main_reason和product_skc_id组合的所有可能的operational_progress和operational_remark的值。

  2. 在主查询中使用INNER JOIN而不是LEFT JOIN。这样,只有在子查询中找到与原始表记录匹配的记录时,才会返回结果。

修复后的SQL查询语句如下所示:

SELECT max(a.operational_progress) operational_progress, a.operational_remark, a.product_skc_id, a.main_reason FROM erp_pdd_stock_assessment a INNER JOIN (SELECT product_skc_id, main_reason, operational_progress, operational_remark FROM erp_pdd_stock_assessment) b ON a.product_skc_id = b.product_skc_id
AND a.main_reason = b.main_reason AND a.operational_progress = b.operational_progress AND a.operational_remark = b.operational_remark GROUP BY a.main_reason, a.product_skc_i

SELECT max aoperational_progress operational_progress aoperational_remark aproduct_skc_id amain_reason FROM erp_pdd_stock_assessment aLEFT JOIN SELECT product_skc_id main_reason max operational_prog

原文地址: http://www.cveoy.top/t/topic/irCZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录