mysql关联查询,结果去重问题!!!

以下是sql:

 SELECT
    T.ID AS 'id',
    P.PRODUCT_CODE AS 'productCode',
    P.PRODUCT_NAME AS 'productName',
    P.BRAND_ID AS 'brandId',
    T.QUANTITY AS 'distributorId',
    W.WAREHOUSE_NAME AS 'keyWord',
    P.BIG_UNIT_ID AS 'bigUnitId',
    P.LITTLE_UNIT_ID AS 'little_unit_id',
    S.SPEC_NAME AS 'categoryId'
FROM
    ol_warehouse_product T
LEFT JOIN ol_product P ON T.PRODUCT_ID = P.ID
LEFT JOIN ol_warehouse W ON T.WAREHOUSE_ID = W.ID
LEFT JOIN ol_product_spec S ON T.PRODUCT_ID = S.PRODUCT_ID
WHERE
    1 = 1
AND T.DEL_FLAG LIKE '%0%'
GROUP BY
    T.ID,
    P.PRODUCT_CODE,
    P.PRODUCT_NAME,
    P.BRAND_ID,
    T.QUANTITY,
    W.WAREHOUSE_NAME,
    P.BIG_UNIT_ID,
    P.LITTLE_UNIT_ID,
    S.SPEC_NAME
ORDER BY
    T.CREATE_DATE DESC

以下是查询结果:
图片说明

现在想一次性把跟ol_warehouse_product这张表有关联的数据查出来,出现重复数据,找了好久资料都没办法解决,最开始的时候有很多重复数据,通过group by之后现在就剩下两条了,但是数据库ol_warehouse_product表中其实只有一条数据,并且S.SPEC_NAME的值是“块”,不知道从那里跑出来个分,各位大大,给小弟一点建议吧。

这种情况肯定是数据问题,DEL_FLAG LIKE '%0%'的有两条数据,你再确认下。

应该是数据的问题。既然是S表中的数据,不妨把其他表的放一边,只查S和T看看

不太明白你想要什么结果,如果是想把下面那个跳数据合并成一条,就把groupby 里面的

 S.SPEC_Name

去掉就好了

左连接是这样的,比如主表有1跳数据,从表有2条数据,那么 他就会显示2条,你这估计是从表数据不止一条

不太明白你想要什么结果,如果是想把下面那个跳数据合并成一条,就把groupby 里面的

需求是什么,如果只要主表数据,那你group by只需要主表id就可以了

既然 分不是你想要的,那你先查出来这个资料,看是否历史数据,可标记作废后关联。

你应该把表结构给我们看一下的

同一个商品对应了两个分类,查出来当然是两条了

在select后面加入DISTINCT,那么你查询出来的结果就不会有完全相同的数据

这个‘分’是从哪里跑出来的呢? 是从ol_product_spec 这个表中的跑出来的。
在ol_product_spec 这个表中 你的水泥(T.PRODUCT_ID = S.PRODUCT_ID=‘水泥ID’) 对应的SPEC_NAME有两个。_
左连接 是以左面为主表 ,左侧的表中有的数据都会显示(不管从表中是否有对应数据),而与左侧表中相对应的复合条件的从表中的数据,都一一显示。
你可以 select * from ol_product_spec where PRODUCT_ID='水泥ID' 运行一下这个sql 看看是不是两条数据

所以,这不是去重 如果数据库数据没问题的话 这样查应该是对的

直接去掉左联接吧,select 字段 from ol_product_spec,ol_product,ol_warehouse,ol_product_spec where 这几张表的连接条件+过滤条件。 这样写出来就么有重复数据。

在select后面加入DISTINCT

应该是join连接的问题