首页 > 解决方案 > 如何从 MySQL 中的同一张表中计算两个不同的值?

问题描述

如果我尝试离开加入同一个表,我会以某种方式在 MySQL 5.7 中获得两个计数的倍数。

我的媒体表如下所示:

create table merchants_product_media
(
    MERCHANT_ID  tinyint unsigned                           not null,
    SKU          char(10)                                   not null,
    TYPE         enum ('image', 'video')                    null,
    STATUS       enum ('active', 'unused') default 'active' null,
    primary key (MERCHANT_ID, SKU, URL),
)

还有表商家和制造商_产品。

现在我想知道商家提供的特定 SKU 的图片和视频数量:

SELECT
   COUNT(med_p.TYPE) AS IMAGE,
   COUNT(med_v.TYPE) AS VIDEO
FROM
    merchants m CROSS JOIN manufacturers_products p
    LEFT JOIN merchants_product_media med_p ON med_p.SKU = p.SKU AND med_p.MERCHANT_ID = m.id AND med_p.TYPE = 'image' AND med_p.STATUS = 'active'
    LEFT JOIN merchants_product_media med_v ON med_v.SKU = p.SKU AND med_v.MERCHANT_ID = m.id AND med_v.TYPE = 'video' AND med_v.STATUS = 'active'
WHERE
      m.ID IN ( '2' )
    AND p.SKU = '44444'
GROUP BY m.id, p.SKU;

正确的结果是: 9 and 3 相反,我得到 27 和 27

如果我将“视频”更改为“测试”。返回正确的图像 9。

我在这里做错了什么?

标签: mysql

解决方案


推荐阅读