不使用 having 的 mysql 计数

标签 mysql

所以我被要求尝试转换这个语句:

    SELECT        C.cid, C.cname
    FROM           Customer C, Buys B
    WHERE        C.cid = B.cid
    GROUP BY  C.cid
    HAVING       count(pid) > 100

同样的事情,但不使用 HAVING 子句。在过去的一个小时左右的时间里,我一直在努力解决这个问题,但我不确定如何正确地做到这一点。我一直在努力弄清楚如何正确使用 WHERE 子句。您只能使用使用 HAVING 子句的聚合函数,对吗?

表格是这样的

Product(pid, name, price, mfgr)
Buys(cid, pid)
Customer(cid, cname, age)

最佳答案

只需在评论中引用@zfus 的回答,就可以让这个问题看起来在列表中有一个答案,以避免进一步的流量。

SELECT cid, cname 
FROM (
    SELECT cid, cname, count(*) AS counter 
    FROM customer c 
    INNER JOIN buys b on (c.cid=b.cid) 
    GROUP BY cid, cname
) AS result 
WHERE counter > 100

关于不使用 having 的 mysql 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255716/

相关文章:

mysql - 使用具有 id 数组的数据透视表在 SQL 中查询行

mysql - SQL查询返回0行

mysql - 优化给定的 mySql 查询

mysql - Opencart 无法加载数据库驱动程序 mmysqli

MySQL:单连接还是多连接?

PHP 有效地重复 SQL 查询每个数组的项目

java - 使用 jdbc 连接 MySQL 时出错 |命名异常

mysql - 这个查询可能吗?

mysql - SQL - 两个表的合并结果

mysql - 如何在 MariaDB 中结合 CONCAT() 和 WHERE?