无论如何在使用Min()时执行Count()?

时间:2013-10-27 14:34:47

标签: mysql sql

以下声明是从products表中获取所有非重复ID。有没有办法可以得到这个sql语句输出的行总数?

select min(product_id) from products 
where market_code = 'germany'
group by product_code


样本表数据:

product_id   market_code   product_code
   1            uk             AAA
   1            uk             AAA
   1            uk             AAA
   2           germany         BAA
   2           germany         BAA
   3            uk             BAA

由于

3 个答案:

答案 0 :(得分:1)

你可以这样做:

SELECT COUNT(*)
FROM
(
    select min(product_id) from products 
    where market_code = 'germany'
    group by product_code
) AS t;

答案 1 :(得分:0)

实际上您的查询不是您所说的“以下声明是从产品表中获取所有唯一/非重复ID。” ,它将为product_code选择最低的product_id,而不是唯一的,例如,如果product_id - 2和product_id - 3为product_code A,它将只返回product_id - 2,它是最小值不唯一,如果你想要唯一的你可以这样做

SELECT product_code,product_id,count(*) 
FROM TABLE 
GROUP BY product_code,product_id

如果您只想要唯一/不重复的ID-s及其计数,则可以使用此查询进行选择

SELECT product_id,count(*) 
    FROM table 
    GROUP BY product_id

答案 2 :(得分:0)

声明:

select min(product_id)
from products 
where market_code = 'germany'
group by product_code;

将拥有与德国产品代码值一样多的行数。如果您假设给定的产品ID从不具有两个代码(对于您的样本数据都是如此),那么以下内容将统计德国的产品而不使用产品ID:

select count(distinct product_code)
from products
where market_code = 'germany';