MySQL 查询不重复的记录

1957C40DB512B1C6E93CCDD5F0D616D8.png

  • 场景

查询最近上课的同学信息,包括同学姓名、最近一次的上课时间、上课记录ID。

  • 表结构
1
2
3
4
5
6
CREATE TABLE `class_record` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '上课记录ID',
`name` char(20) DEFAULT NULL COMMENT '同学姓名',
`time` int(11) DEFAULT NULL COMMENT '上课时间(时间戳)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
字段 类型 默认 注释
id int(11) NULL 上课记录ID
name char(20) NULL 同学姓名
time int(10) NULL 上课时间(时间戳)

class_record 上课记录表

  • 表数据
1
2
3
4
5
6
7
8
9
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (2, '柯南', 1579536000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (3, '元太', 1558368000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (4, '元太', 1582214400);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (5, '步美', 1558368000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (6, '步美', 1584720000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (7, '小哀', 1558368000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (8, '小哀', 1587398400);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (9, '光彦', 1558368000);
INSERT INTO `test`.`class_record` (`id`, `name`, `time`) VALUES (10, '光彦', 1589990400);
id name time
1 柯南 1558368000
2 柯南 1579536000
3 元太 1558368000
4 元太 1582214400
5 步美 1558368000
6 步美 1584720000
7 小哀 1558368000
8 小哀 1587398400
9 光彦 1558368000
10 光彦 1589990400
  • 查询语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
max( class_record.time ) AS maxtime,
from_unixtime( max( class_record.time ), '%Y-%m-%d' ) AS maxdate,
class_record.name,
class_record.id
FROM
class_record
WHERE
NOT EXISTS (
SELECT
1
FROM
class_record AS class_record_2
WHERE
class_record_2.name = class_record.name
AND class_record.time < class_record_2.time
)
GROUP BY
class_record.name
ORDER BY
maxtime ASC
  • 查询结果
maxtime maxdate name id
1579536000 2020-01-21 柯南 2
1582214400 2020-02-21 元太 4
1584720000 2020-03-21 步美 6
1587398400 2020-04-21 小哀 8
1589990400 2020-05-21 光彦 10

关联

[[MySQL 删除重复数据只保留一条]]

-------------本文结束感谢您的阅读-------------
0%