我有一张 table :
id | parameter
1 | A
1 | B
2 | A
3 | A
3 | B
表示使用以下值定义的对象:
1 -> A,B
2 -> A
3 -> A,B
我想使用 SQL 查询计算具有不同参数的对象的数量,因此在本例中,它将是 2 个唯一的对象,因为 1 和 3 具有相同的参数。
参数数量没有限制,可以是0,也可以是任何其他数量。
数据库是Microsoft SQL Server 2000。但我不介意了解其他数据库的解决方案。
最佳答案
如果我理解正确的话,您希望表中表示的每个 id
的参数
的不同组合数量,可能包含数字展示每种不同组合的实体。
我不能代表 SQL Server,但在 MySQL 下你可以做这样的事情:
SELECT parameter_set, COUNT(*) AS entity_count
FROM (
-- Here we "flatten" the different parameter combinations per id
SELECT id,
GROUP_CONCAT(parameter ORDER BY parameter) AS parameter_set
FROM tbl
GROUP BY id
) d
GROUP BY parameter_set;
这会给你这个:
parameter_set | entity_count
---------------+--------------
A,B | 2 -- two entities have params A, B
A | 1 -- one entity has param A
和 SELECT COUNT(DISTINCTparameter_set FROM (... flattening query ...)) d
将为您提供不同参数集的数量。
关于SQL 计算参数定义的唯一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026977/