Sql一对多关联最新的一条数据

我们有如下表结构,一个是用户表,一个是记录表,一个用户会有多条记录,现在我们需要去查询出来每个用户的信息和最新的操作记录(这里以id值最大为最新的)

Sql一对多关联最新的一条数据_第1张图片

CREATE TABLE `record` (
  `id` int(11) NOT NULL,
  `u_id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

sql以及查询的结果

Sql一对多关联最新的一条数据_第2张图片

SELECT u.id,u.`name`,r.name FROM `user` u 
LEFT JOIN record r ON u.id = r.u_id AND
NOT EXISTS (SELECT * FROM record WHERE u_id = u.id AND r.id < id)

你可能感兴趣的:(#,MySql,mysql,sql,数据库,一对多,not,exisis)