mysql计算列中唯一id的数量

标签 mysql sql database rdbms

这是我的查询

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

enter image description here

正如您在最后一列 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) enter image description here

最佳答案

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

关于mysql计算列中唯一id的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111309/

相关文章:

SQL Server bool 表达式评估

sql - Oracle 中插入后触发插入 sysdate

ios - Realm swift : Database won't be updated after backup

database - 标准化表 6

mysql - 按类别 SQL 查询的相对频率

php - 在 Wamp Server Mysql 命令行中使用 Mysqldump 备份所有数据库时出现错误 1064(42000)

mysql - 在 MySQL 查询中查找具有多个 "OR"的部分匹配

sql - 如何截断 MySQL 数据库中的所有表?

java - 在第 1 行的 'update, stock_id) values (0, 0.0, 10018, 1, null, 0, null, 0)' 附近使用正确的语法

mysql - 带 Mysql 计数的不同 SUM