mysql - 改进我的 mysql 查询的替代方法?

标签 mysql sql mysql-workbench

是否有编写此查询的最佳方式?它在 Workbench 上工作得很好,但是当我在 JS 上运行它时,它没有返回正确的值。

我想做的是根据用户的过滤设置(基于所选类别的 Material 和设计)向用户显示所有项目的列表。

查询:

SELECT COUNT(A.id)
FROM tbl_product A 
JOIN tbl_product_details B ON A.id = B.prod_id
JOIN tbl_category C ON A.id = C.prod_id
JOIN tbl_material D ON A.id = D.prod_id
JOIN tbl_design E ON A.id = E.prod_id
WHERE C.category_id IN (6) AND (D.material_id IN (15) OR E.design_id IN (39));

db structure looks like this

我希望输出为(工作台结果):
计数(A.id):42

相反,它给了我:
计数(A.id):1582

最佳答案

我猜你想要:

SELECT COUNT(DISTINCT A.id)

可能还有其他方式来表达查询(特别是使用 EXISTS),但这是最简单的修改。

关于mysql - 改进我的 mysql 查询的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841637/

相关文章:

php - MySQL,对 id 相同的多行进行分组

Mysql 仅使用一张表来统计每个奖杯的条目总数

mysql - 将所有表数据从一个模式导入到另一个模式

mysql - 使用 Case When 将 1 列拆分为多列同时忽略空值

mysql - 工作台出现 LEFT JOIN 错误

sql - 删除 block PostgreSQL 中的大量行

mysql - 获取具有唯一电话号码的记录

java - 夏令时的 JDBC Mysql 时区问题

mysql - 内连接三个具有垂直和水平引用的表

sql - 简单的 mysql group by query 需要帮助