如何为具有不同外键的每个记录选择最新记录

时间:2018-12-22 23:41:16

标签: mysql greatest-n-per-group

我有一个具有以下结构的表。

<!DOCTYPE HTML>
<html lang="en">
    <head>
      .....
    </head>
    <body>
        <!-- MAYBE YOU CAN DO A BLADE TEMPLATE -->
        <div id="navitagion"></div>  
        <div id="app"></div>  
        <!--=============== scripts  ===============-->
        <script type="text/javascript" src="{{asset('path/to/vue.js')}}"></script>
        const app = new Vue({
           el: '#app',
        });
        const navigation = new Vue({
           el: '#navigation',
        });
    </body>
</html>

我想获取每个+--+------+---+-------------------+ |id|cardId|elo|timestamp | +--+------+---+-------------------+ |1 |000ac9|150|2018-12-19 17:49:16| |2 |000ac9|160|2018-12-19 17:59:16| |3 |000ad9|140|2018-12-19 18:21:16| |4 |000ac9|130|2018-12-19 17:59:16| |5 |000ad9|260|2018-12-19 19:01:16| +--+------+---+-------------------+ 的最新elo

我尝试使用“区别关键字”,但这并不能总是为我提供最新的数据库条目。

我期望类似以下的内容。

cardId

1 个答案:

答案 0 :(得分:0)

您可以使用MySQL 8.x中提供的ROW_NUMBER()窗口函数:

select * from (
  select
    id,
    cardId,
    elo,
    timestamp,
    row_number() over(partition by cardId order by timestamp desc) as rn
  from my_table
) x
where rn = 1