1

下面的语句是从 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

谢谢

4

3 回答 3

1

你可以简单地这样做:

SELECT COUNT(*)
FROM
(
    select min(product_id) from products 
    where market_code = 'germany'
    group by product_code
) AS t;
于 2013-10-27T14:36:20.017 回答
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';
于 2013-10-27T17:01:55.647 回答
0

实际上,您的查询不是您所说的“下面的语句是从产品表中获取所有唯一/非重复 ID。” , 它会为 product_code 选择最低的 product_id ,而不是唯一的,例如如果 product_code A 有 product_id - 2 和 product_id - 3 ,它只会返回 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
于 2013-10-27T14:49:06.617 回答