两列的不同组合

The*_*rew 5 mysql count mysql-5.1 distinct

我目前正在尝试在表中找到不同的组合,因为其中两列彼此之间存在多对多关系。

数据围绕着针对特定客户端运行的备份策略,可以总结如下:

在此处输入图片说明

我想为上表生成的答案是7,因为有很多不同的组合。

有没有人知道如何做到这一点?我曾尝试尝试使用嵌套计数和不同的值(我可以过滤到一列,但不能同时过滤两列)。

Kár*_*agy 5

您可以通过运行来计算不同的元素:

select count(distinct policy_id, client_id) from policy_client;
Run Code Online (Sandbox Code Playgroud)

另一种选择是分组并计算:

select count(*) from (select policy_id, client_id from policy_client group by 1,2) a;
Run Code Online (Sandbox Code Playgroud)

运行这两个版本,看看哪个版本在你的数据集上表现更好。

一种非常快速但不完全准确的方法,如果您在 (policy_id 和 client_id) 上有一个键,您还可以检查该索引的基数,但这是一个近似而不准确的数字。