MySQL Select rows on first occurrence of each unique value

后端 未结 5 1164
迷失自我
迷失自我 2020-12-08 04:06

Let\'s say you have the following table (the column of interest here is cid):

+-----+-------+-------+-------+---------------------+-------------         


        
5条回答
  •  没有蜡笔的小新
    2020-12-08 04:45

    mysql has a "cheat" for this:

    select *
    from mytable
    group by cid;
    

    That's all you need, because in mysql it allows you to not aggregate the non-grouped-by columns (other databases would throw a syntax error), in which case it outputs only the first occurrence of each group-by value(s). Note though that this won't guarantee the way in which the "first" occurrence is determined (it will be just how the rows are read in)

    If you want a particular first occurrence, sort first, then apply the group-by cheat:

    select *
    from (
        -- order by the "time" column descending to get the "most recent" row
        select * from mytable order by time desc
        ) x
    group by cid
    

提交回复
热议问题