代码之家  ›  专栏  ›  技术社区  ›  Ali

在MySQL查询中同时使用distinct和count

  •  111
  • Ali  · 技术社区  · 15 年前

    是否可能出现这种情况:

    SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword'
    

    我想要的是获得与关键字关联的唯一产品ID的数量。同一个产品可能与关键字关联两次或更多,但我希望每个产品ID只计算一次

    7 回复  |  直到 7 年前
        1
  •  250
  •   David    10 年前

    使用

    SELECT COUNT(DISTINCT productId) from  table_name WHERE keyword='$keyword'
    
        2
  •  49
  •   Aniket Kulkarni    11 年前

    我会这样做:

    Select count(*), productid
    from products
    where keyword = '$keyword'
    group by productid
    

    这会给你一个清单

    count(*)    productid  
    ----------------------
     5           12345   
     3           93884   
     9           93493    
    

    这允许您查看与关键字关联的每个不同productID ID中有多少个。

        3
  •  31
  •   tekBlues    10 年前

    你很亲近:—)

    select count(distinct productId) from table_name where keyword='$keyword'
    
        4
  •  15
  •   Alistair Hart    12 年前

    仅供参考,这可能更快,

    SELECT count(1) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp
    

    比这个,

    SELECT COUNT(DISTINCT productId) WHERE keyword='$keyword'
    
        5
  •  6
  •   George SEDRA    11 年前

    所有这些工作到底是怎么回事?

    太简单了

    如果你想在这里列出每个关键字中有多少productid,这就是代码

    SELECT count(productId),  keyword  FROM `Table_name` GROUP BY keyword; 
    
        6
  •  2
  •   Rhalp Darren Cabrera    7 年前

    选择不同的产品并显示每个产品的计数

    对于这类问题的另一个答案,这是我的另一个答案,用于根据不同的产品名称计算产品基数,如下示例所示:

    Table Value

    select * FROM Product
    

    Counted Product Name

    SELECT DISTINCT(Product_Name),
    (SELECT COUNT(Product_Name) 
    from Product  WHERE Product_Name = Prod.Product_Name)  
    as `Product_Count`
    from Product as Prod
    

    记录计数:4;执行时间:2ms

        7
  •  -5
  •   Macarse    15 年前

    和一个小组在一起不是更好吗? 类似:

    SELECT COUNT(*) FROM t1 GROUP BY keywork;