MySQL 查询不重复的记录

63 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

image.png

  • 场景

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

  • 表结构
字段类型默认注释
idint(10)NULL上课记录ID
namechar(10)NULL同学姓名
timeint(11)NULL上课时间

class_record 上课记录表

  • 表数据
上课记录ID同学姓名上课时间
1柯南1558368000
2柯南1579536000
3元太1558368000
4元太1582214400
5步美1558368000
6步美1584720000
7小哀1558368000
8小哀1587398400
9光彦1558368000
10光彦1589990400
  • 查询语句
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
  • 查询结果
最近上课时间(时间戳)最近上课时间(日期)同学姓名上课记录ID
15795360002020-01-21柯南2
15822144002020-02-21元太4
15847200002020-03-21步美6
15873984002020-04-21小哀8
15899904002020-05-21光彦10