mysql查询计数主表中第二表中具有多个属性的记录数

标签 mysql sql

我需要帮助构建 MYSQL 查询:

主表列出了待售车辆的姓名和地址。

属性(第二)表列出了车辆属性。

如何统计主表中属性表颜色为红色、年份为 2015 年、价格小于 15,000、客户地址为哥伦布的卖家数量?

select count(`master_id`)
from `customers` c
left join `attributes` a
on c.master_id = a.master_id
where (
a.name = 'color' and a.value = 'red' and 
a.name = 'year' and a.value = '2015' and 
a.name = 'price' and a.value > '15000' and 
c.city = 'Columbus';

最佳答案

您可以使用group byhaving:

select count(*)
from (select master_id
      from `customers` c left join
           `attributes` a
           on c.master_id = a.master_id
      where (name, value) in ( ('color', 'red'), ('year', '2015'), ('price', '15000') and
            c.city = 'Columbus'
      group by a.master_id
      having count(distinct name) = 3
     ) x;

请注意,这使用元组来简化 where 子句。

关于mysql查询计数主表中第二表中具有多个属性的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48896077/

相关文章:

mysql - 从数据库中获取唯一结果

php - 使用 SQL 对表中的数据进行分类/分组

PHP MySQL : Retrieving 2 usernames via 2 user id

sql - 在sys.servers中找不到服务器 'dbo'。

mysql - 如何根据日期返回新 ID?

mysql - 如何将类型 blob 图像显示到 ejs 网页?

mysql - 如何在mysql中获取计数?

sql - Oracle SQL - 查询子表以查找匹配的父表

mysql - 删除后触发THEN UPDATE mysql

php - 优化 CI 中的 MySQL 查询