How to select distinct rows without using group by statement

前端 未结 4 589
挽巷
挽巷 2021-01-01 19:28
A B C
1 1 1 
1 1 1 
2 2 2 
2 2 2 
3 3 3 
3 3 3 
4 4 4 
4 4 4 
5 5 5 
5 5 5 
5 5 5 
6 6 6
6 6 6 

I am to output only the distinct rows without using

4条回答
  •  一生所求
    2021-01-01 20:06

    This may totally shock you but MySQL uses GROUP BY under the hood to execute DISTINCT !!!

    Here is something you may want to try

    If the table is called mytable, do these two things:

    First run this

    ALTER TABLE mytable ADD INDEX ABC (A,B,C);`
    

    Second, run this query

    SELECT A,B,C FROM mytable GROUP BY A,B,C;
    

    GROUP BY actually works better with an index present !!!

    Here is sample code to prove it works

    mysql> drop database if exists cool_cs;
    Query OK, 1 row affected (0.04 sec)
    
    mysql> create database cool_cs;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use cool_cs
    Database changed
    mysql> create table mytable
        -> (A int,B int,C int, key ABC (A,B,C));
    Query OK, 0 rows affected (0.08 sec)
    
    mysql> INSERt INTO mytable VALUES
        -> (1,1,1),(1,1,1),(2,2,2),(2,2,2),(3,3,3),
        -> (3,3,3),(4,4,4),(4,4,4),(5,5,5),(5,5,5),
        -> (5,5,5),(6,6,6),(6,6,6);
    Query OK, 13 rows affected (0.06 sec)
    Records: 13  Duplicates: 0  Warnings: 0
    
    mysql> select a,b,c FROM mytable group by a,b,c;
    +------+------+------+
    | a    | b    | c    |
    +------+------+------+
    |    1 |    1 |    1 |
    |    2 |    2 |    2 |
    |    3 |    3 |    3 |
    |    4 |    4 |    4 |
    |    5 |    5 |    5 |
    |    6 |    6 |    6 |
    +------+------+------+
    6 rows in set (0.02 sec)
    
    mysql>
    

    Give it a Try !!!

提交回复
热议问题