mysql中,fi有重复值,p12为时间,查询距离当前时间最近的f1不重复的数据
时间: 2024-11-05 10:26:13 浏览: 10
使用distinct在mysql中查询多条不重复记录值的解决办法
5星 · 资源好评率100%
在MySQL中,如果你有一个名为`your_table`的表,其中包含`f1`、`fi`(看起来像是字段名错误,可能是`id`或者其他含义)以及`p12`(假设它是日期或时间类型的字段),你想找出`fi`字段有重复值,并且每个重复组中最新的`p12`对应的时间距离当前时间最近的`f1`,你可以使用以下查询:
首先,你需要按照`fi`排序,然后对于每个`fi`组,选择`p12`最新的记录,可以用`ROW_NUMBER()`窗口函数结合`ORDER BY`来实现:
```sql
WITH ranked_rows AS (
SELECT
fi,
f1,
p12,
ROW_NUMBER() OVER(PARTITION BY fi ORDER BY p12 DESC) as rn
FROM your_table
)
SELECT *
FROM ranked_rows
WHERE rn = 1 AND fi IN (SELECT fi FROM ranked_rows GROUP BY fi HAVING COUNT(*) > 1)
ORDER BY p12 DESC;
```
这个查询先按`fi`分组,然后为每组内的`p12`降序排列,取每个组的第一条记录(即最新的)。`WHERE rn = 1`筛选出有重复的`fi`并且选择了最新的一条,`fi IN ... GROUP BY ... HAVING ...`则进一步确认了这些组确实存在重复。
阅读全文