Mysql
如何計算組內的不同列?
我有以下查詢:
SELECT DISTINCT name, surname, id_number, gender FROM table1;
如何按性別過濾以獲取上述查詢結果的性別細分?我是否使用子查詢?如果是這樣,我該如何編寫子查詢?
請注意,在我的表中有重複的條目
id_number
樣本數據:
------------------------------------- Name | Surname |ID_No |Gender| ------------------------------------- John Doe 1234A6 M Jane Doe 2553B7 F Steve Jobs 2636A8 M
預期產出
-------------- M | F | --------------- 2 1
If
id_number
is notUNIQUE
(by extension) or aPRIMARY KEY
你想要的是COUNT(DISTINCT ...)
SELECT gender, count(DISTINCT name, surname, id_number) FROM table1 GROUP BY gender;
你想要,
- 上的索引
gender
和第二個索引name, surname, id_number
- 上的索引
gender, name, surname, id_number
不能保證 MySQL 無論如何都會對它們做一些聰明的事情,但它會使用它們進行第一次排序為男性/女性,這至少會減少
DISTINCT
約 1/2 的負載。與可能翻倍的目前答案相比。