Mysql

兩列的不同組合

  • May 11, 2017

我目前正在嘗試在表中找到不同的組合,因為其中兩列彼此之間存在多對多關係。

數據圍繞著針對特定客戶端執行的備份策略,可以總結如下:

在此處輸入圖像描述

我想為上表生成的答案是7,因為存在不同組合的數量。

有沒有人知道如何做到這一點?我嘗試過使用嵌套計數和不同的值(我能夠過濾到一列但不能同時過濾兩者)。

您可以通過執行來計算不同的元素:

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)上有一個鍵,那麼這是一種非常快速但不完全準確的方法,您還可以檢查該索引的基數,但這是一個近似而不准確的數字。

我認為最簡單的應該是:

SELECT COUNT(DISTINCT policy, client) 
        AS distinct_combinations
FROM table_name ;

引用自:https://dba.stackexchange.com/questions/111412