MySQL:如果存在则选择最新记录,如果不存在则为NULL

标签 mysql sql

有以下两个表:

玩家

id | player
-----------
 1 | ABC
 2 | CDE
 3 | FGH

游戏

id | player_id | created_at
-------------------------------------
 1 | 1         | 2019-09-01 15:00:00
 2 | 1         | 2019-09-15 17:00:00
 3 | 2         | 2019-10-01 15:00:00
 4 | 2         | 2019-10-05 18:00:00
 5 | 2         | 2019-10-12 15:00:00

我如何选择所有玩家并显示他们的最新游戏(​​如果有的话),或者如果他们从未玩过游戏则显示 NULL?这个例子是这样的:

player_id | created_at
--------------------------------
        1 | 2019-09-15 17:00:00
        2 | 2019-10-12 15:00:00
        3 | NULL

最佳答案

您可以尝试以下 - 使用左连接

select p.id, max(created_at)
from Players p left join Games g on p.id=g.player_id
group by p.id

关于MySQL:如果存在则选择最新记录,如果不存在则为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396100/

相关文章:

sql - 数据库中的营业时间使用什么数据类型

sql - 获取具有十进制值的数字

MySQL:如何根据另一列创建唯一标识符

mysql - CakePHP 2.5.1 中无法将数据从一个表单保存到多个表中

mysql - 设计器不只处理 MySQL 关系

asp.net - mysqltransaction对象(mysql)和transactionscope对象(asp.net)之间的区别

c# - 在 LINQ 中对多个表进行分组

mysql - 循环遍历同一个表中有超过3条记录的每个ID

php - 向查询中的连接表添加排名

sql - PostgreSQL 间隔总和