mysql - 如何从 MySql 表中获取唯一记录
问题描述
我有一个 mysql 表,其中包含以下字段。“图像 id、日期、媒体名称、媒体类型、速率、价值、部门、类别、客户和产品”。该表包含大约 5 百万条记录。每个媒体 ID 有多个记录。我们想提取表中复制的每个 media_id 的第一条记录。第一条记录基本上意味着我们使用日期字段为每个特定的 image_id 仅复制一条记录的数据。为了更清楚地说明这一点,请查看下面链接中的数据屏幕截图。在屏幕截图中,您可以从包含 5 百万条记录的原始数据表中看到 5 条记录的样本。在这些记录下面,你可以看到查询的实际结果,是两条记录。我们尝试了几个查询,但我们总是得到相同 image_id 的多条记录。有什么想法吗?
解决方案
如果 MySQL 8,您可以使用带有 over 子句的 row_number 函数。按日期提取每个 image_id 订单的第一条记录(ord=1)的查询如下:
select * from
(select *,
row_number() over(partition by image_id order by date) as ord from Original_Table) a
where ord=1
但是,我不确定在 500 万条记录的情况下您能否获得足够的性能。
推荐阅读
- c - How can I open a sound file loaded in memory with libsndfile?
- java - 从可能在类路径中的路径获取 InputStream
- html - 有没有办法在不提交的情况下获取 reCAPTCHA 的响应令牌?
- typescript - 模式 'components/*/*' 最多可以有一个 '*' 字符
- r - 有没有办法在 R 中制作气泡图,其中气泡接触并且一个轴代表值?
- python - 如何使用 gzip 提取特定文件
- react-native - 如何在每个选项卡中实现抽屉导航器?
- python - 由于 python 上未捕获的异常“NSInvalidArgumentException”而终止应用程序
- mysql - mysql - 子查询并在列内返回条件值
- android - React 本机图像选择器导致应用程序重新启动而没有错误