mysql - 如何从 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。
我在这里做错了什么?
解决方案
推荐阅读
- javascript - 如何简化基于多重条件的函数打印
- sql - Postgresql“列必须出现在 GROUP BY 子句中或在聚合函数中使用”和唯一字段
- python - Ckeditor texteditor 没有出现在应用 RichTextfield 的 django admin 中
- azure-devops - 有什么方法可以在发布管道中获取任务名称以根据条件执行特定任务
- html - 类/id 名称可以是表格背景颜色吗
- python - 从选择中更新 Python SqlAlchemy
- javascript - 为什么我收到此错误:未定义不是评估 this.state.tracks[0].id REACT-NATIVE 的对象
- javascript - 如何在 webp 图像加载时调用 onload 回调?
- python - 如何减少 python 代码所需的执行时间?
- php - 通过 HTTPonlycookies 进行 Laravel 和 Passport 身份验证