drop table if exists t1; create table t1(n1 int, n2 int, s char(20), vs varchar(20), t text); insert into t1 values (1,11, 'one','eleven', 'eleven'), (1,11, 'one','eleven', 'eleven'), (2,11, 'two','eleven', 'eleven'), (2,12, 'two','twevle', 'twelve'), (2,13, 'two','thirteen', 'foo'), (2,13, 'two','thirteen', 'foo'), (2,13, 'two','thirteen', 'bar'), (NULL,13, 'two','thirteen', 'bar'), (2,NULL, 'two','thirteen', 'bar'), (2,13, NULL,'thirteen', 'bar'), (2,13, 'two',NULL, 'bar'), (2,13, 'two','thirteen', NULL); select distinct n1 from t1; n1 1 2 NULL select count(distinct n1) from t1; count(distinct n1) 2 select distinct n2 from t1; n2 11 12 13 NULL select count(distinct n2) from t1; count(distinct n2) 3 select distinct s from t1; s one two NULL select count(distinct s) from t1; count(distinct s) 2 select distinct vs from t1; vs eleven twevle thirteen NULL select count(distinct vs) from t1; count(distinct vs) 3 select distinct t from t1; t eleven twelve foo bar NULL select count(distinct t) from t1; count(distinct t) 4 select distinct n1,n2 from t1; n1 n2 1 11 2 11 2 12 2 13 NULL 13 2 NULL select count(distinct n1,n2) from t1; count(distinct n1,n2) 4 select distinct n1,s from t1; n1 s 1 one 2 two NULL two 2 NULL select count(distinct n1,s) from t1; count(distinct n1,s) 2 select distinct s,n1,vs from t1; s n1 vs one 1 eleven two 2 eleven two 2 twevle two 2 thirteen two NULL thirteen NULL 2 thirteen two 2 NULL select count(distinct s,n1,vs) from t1; count(distinct s,n1,vs) 4 select distinct s,t from t1; s t one eleven two eleven two twelve two foo two bar NULL bar two NULL select count(distinct s,t) from t1; count(distinct s,t) 5 select count(distinct n1), count(distinct n2) from t1; count(distinct n1) count(distinct n2) 2 3 select count(distinct n2), n1 from t1 group by n1; count(distinct n2) n1 1 NULL 1 1 3 2 drop table t1; create table t1 (n int default NULL); flush status; select count(distinct n) from t1; count(distinct n) 5000 show status like 'Created_tmp_disk_tables'; Variable_name Value Created_tmp_disk_tables 0 drop table t1; create table t1 (s text); flush status; select count(distinct s) from t1; count(distinct s) 5000 show status like 'Created_tmp_disk_tables'; Variable_name Value Created_tmp_disk_tables 1 drop table t1;