TheGrew Asked: 2015-08-19 04:29:40 +0800 CST2015-08-19 04:29:40 +0800 CST 2015-08-19 04:29:40 +0800 CST 两列的不同组合 772 我目前正在尝试在表中找到不同的组合,因为其中两列彼此之间存在多对多关系。 数据围绕着针对特定客户端运行的备份策略,可以总结如下: 我想为上表生成的答案是7,因为存在不同组合的数量。 有没有人知道如何做到这一点?我尝试过使用嵌套计数和不同的值(我能够过滤到一列但不能同时过滤两者)。 mysql mysql-5.1 2 个回答 Voted Best Answer Károly Nagy 2015-08-19T04:57:21+08:002015-08-19T04:57:21+08:00 您可以通过运行来计算不同的元素: select count(distinct policy_id, client_id) from policy_client; 另一种选择是分组并计算: select count(*) from (select policy_id, client_id from policy_client group by 1,2) a; 运行这两个版本,看看哪个版本在您的数据集上表现更好。 如果您在(policy_id 和 client_id)上有一个键,则一种非常快速但不完全准确的方法,您还可以检查该索引的基数,但这是一个近似而不是确切的数字。 ypercubeᵀᴹ 2015-08-19T05:12:28+08:002015-08-19T05:12:28+08:00 我认为最简单的应该是: SELECT COUNT(DISTINCT policy, client) AS distinct_combinations FROM table_name ;
您可以通过运行来计算不同的元素:
另一种选择是分组并计算:
运行这两个版本,看看哪个版本在您的数据集上表现更好。
如果您在(policy_id 和 client_id)上有一个键,则一种非常快速但不完全准确的方法,您还可以检查该索引的基数,但这是一个近似而不是确切的数字。
我认为最简单的应该是: