开发者

MySQL select count

I am trying to count the number of companies that have at least one product from the following query

SELECT count(*)
FROM company c
开发者_高级运维JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
GROUP by c.id

So, this shows me a list of all companies, and the count of products for each company.

What I am trying to achieve is a count of companies from the above result.

This can be achieved as follows:

SELECT count(*)
FROM ( 
    SELECT count(*)
    FROM company c
    JOIN product p on c.id = product.company_id
    WHERE p.is_deleted = 0
    AND c.is_customer = 1
    and c.company_type_id = 5
    GROUP by c.id) AS t1

So, this gives me the correct result, but I am just wondering if there is a more efficient way of doing things.


I believe you can simplify it to this:

SELECT count(distinct c.id)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜