下面是我的问题
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)

发布于 2017-09-08 15:50:46
您可以使用COUNT(DISTINCT options_id) as field_name :)
发布于 2017-09-08 15:58:19
假设<REST_OF_YOUR_QUERY>是以LEFT JOIN开头的查询的一部分
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>发布于 2017-09-08 17:15:50
查询应该返回3
这只是products_attributes中针对products_id 109的options_id的不同计数:
select count(distinct options_id)
from products_attributes
where products_id = 109;https://stackoverflow.com/questions/46111309
复制相似问题