从重复数据中选择唯一数据的查询速度更快
Faster query in selecting unique data from duplicate data
我有一个 table 的命名出勤,其结构如下:
att_id employee_id time status
1 101-000001 2019-09-09 08:00:00 1
2 101-000001 2019-09-09 17:00:00 2
3 101-000001 2019-09-10 08:00:00 1
4 101-000001 2019-09-10 08:00:01 1
5 101-000001 2019-09-10 17:00:00 2
6 101-000001 2019-09-10 17:00:00 2
现在我只想获取条件为 employee_id = 000001
的唯一值。
我想要的输出是这样的:
att_id employee_id time status
1 101-000001 2019-09-09 08:00:00 1
2 101-000001 2019-09-09 17:00:00 2
3 101-000001 2019-09-10 08:00:00 1
5 101-000001 2019-09-10 17:00:00 2
这是我所做的,但 returns 重复数据。 :
SELECT * FROM attendance WHERE employee_id = "101-000001" AND att_id IN
(SELECT MIN(att_id) FROM tbl_attendance GROUP BY time)
任何人都可以建议我更优化的解决方案吗?
SELECT *
FROM attendance
WHERE employee_id = "101-000001"
GROUP BY employee_id,SUBSTRING(time,1,10),status
我有一个 table 的命名出勤,其结构如下:
att_id employee_id time status
1 101-000001 2019-09-09 08:00:00 1
2 101-000001 2019-09-09 17:00:00 2
3 101-000001 2019-09-10 08:00:00 1
4 101-000001 2019-09-10 08:00:01 1
5 101-000001 2019-09-10 17:00:00 2
6 101-000001 2019-09-10 17:00:00 2
现在我只想获取条件为 employee_id = 000001
的唯一值。
我想要的输出是这样的:
att_id employee_id time status
1 101-000001 2019-09-09 08:00:00 1
2 101-000001 2019-09-09 17:00:00 2
3 101-000001 2019-09-10 08:00:00 1
5 101-000001 2019-09-10 17:00:00 2
这是我所做的,但 returns 重复数据。 :
SELECT * FROM attendance WHERE employee_id = "101-000001" AND att_id IN
(SELECT MIN(att_id) FROM tbl_attendance GROUP BY time)
任何人都可以建议我更优化的解决方案吗?
SELECT *
FROM attendance
WHERE employee_id = "101-000001"
GROUP BY employee_id,SUBSTRING(time,1,10),status