这是我的查询
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)。 如果此计数出现在包含结果集所有行的新临时列中,我没有问题
P.S:我不想更改GROUP BY pa.products_attributes_id
,因为我在获取数据时需要它
编辑:使用 (SELECT COUNT(DISTINCT options_id) FROM products_attributes ) AS options_id_count
结果集现在是 12,这是错误的(应该是 3)
最佳答案
您可以使用COUNT(DISTINCT options_id)作为field_name
:)
关于mysql计算列中唯一id的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111309/