首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql统计列中唯一id的个数

问mysql统计列中唯一id的个数
EN

Stack Overflow用户
提问于 2017-09-08 15:48:43
回答 4查看 1.1K关注 0票数 0

下面是我的问题

代码语言:javascript
复制
SELECT
  pa.products_attributes_id,
  pa.products_id,
  pa.options_id
FROM products_attributes pa
LEFT JOIN products_description pd
  ON pa.products_id = pd.products_id
  AND pd.language_id = '1'
LEFT JOIN products_attributes_groups pag
  ON pa.products_attributes_id = pag.products_attributes_id
WHERE pa.products_id = '109'
GROUP BY pa.products_attributes_id
ORDER BY pa.attribute_sort

​

​

正如您在最后一列options_id中看到的,有3个唯一的选项id(即2、13和1)

我想要实现的是计算option_id列中唯一id的数量。在上面的结果集中,查询应该返回3(因为有3个唯一的option_ids 2、13和1)。如果此计数出现在包含结果集所有行的新临时列中,则不会出现问题

附言:我不想更改GROUP BY pa.products_attributes_id,因为我在获取数据时需要它

编辑:使用(SELECT COUNT(DISTINCT options_id) FROM products_attributes ) AS options_id_count,结果集现在是12,这是错误的(应该是3)

​

EN

回答 4

Stack Overflow用户

发布于 2017-09-08 15:50:46

您可以使用COUNT(DISTINCT options_id) as field_name :)

票数 0
EN

Stack Overflow用户

发布于 2017-09-08 15:58:19

假设<REST_OF_YOUR_QUERY>是以LEFT JOIN开头的查询的一部分

代码语言:javascript
复制
SELECT
  pa.products_attributes_id,
  pa.products_id,
  pa.options_id,
  (
     SELECT COUNT(DISTINCT options_id) 
     FROM products_attributes
     <REST_OF_YOUR_QUERY>
  ) option_count
FROM products_attributes pa
<REST_OF_YOUR_QUERY>
票数 0
EN

Stack Overflow用户

发布于 2017-09-08 17:15:50

查询应该返回3

这只是products_attributes中针对products_id 109的options_id的不同计数:

代码语言:javascript
复制
select count(distinct options_id)
from products_attributes 
where products_id = 109;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46111309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档