MYSQL查询去调重复ID的数据只保留一条
时间: 2023-07-22 14:15:19 浏览: 152
您可以使用以下 SQL 查询语句来去重并保留一条重复 ID 的数据:
```
DELETE FROM your_table
WHERE id NOT IN
(SELECT
MIN(id)
FROM
your_table
GROUP BY
duplicate_column);
```
请将 "your_table" 替换为您的表名,"id" 替换为您的表中的 ID 列名,"duplicate_column" 替换为您想要去重的列名。执行该查询后,重复 ID 的数据将被删除,只保留一条数据。
相关问题
mysql 去掉重复数据保留一条
你可以使用以下方法来去掉MySQL中的重复数据并保留一条:
```sql
DELETE t1 FROM table_name t1, table_name t2
WHERE t1.id > t2.id AND t1.column_name = t2.column_name;
```
在上面的SQL语句中,你需要将 `table_name` 替换为你的表名,`id` 替换为你的表中的唯一标识列,`column_name` 替换为你想要检查重复的列名。
这条SQL语句会删除所有重复的行,只保留具有最小 `id` 值的行。这样做将确保每个重复组中只保留一条数据。
请注意,在执行此操作之前,请确保先备份你的数据,以防止意外删除。
mysql 查数据,根据proj_id去重,取最新一条数据
在MySQL中,如果你想根据`proj_id`字段去除重复并获取每条`proj_id`对应的最新记录,你可以使用`ROW_NUMBER()`窗口函数结合`LIMIT`来实现。这是一个示例查询:
```sql
SELECT *
FROM (
SELECT proj_id,
column1,
column2,
... (列出其他需要的列),
ROW_NUMBER() OVER(PARTITION BY proj_id ORDER BY create_time DESC) as row_num
FROM t_zwzt_office
WHERE create_time BETWEEN '2024-01' AND '2024-08-01'
AND aff_form_info NOT LIKE '%唐文%'
) AS subquery
WHERE row_num = 1
```
这个查询的工作原理如下:
1. 内部查询(subquery)首先根据`proj_id`分区,并按照`create_time`降序排列(最新的记录排在前面),这样每一组`proj_id`就有了一个唯一的排名(row_num)。
2. 外层查询再限制只选择`row_num`为1的结果,也就是每个`proj_id`下的最新记录。
注意:这里的`column1`, `column2`, ... 是你需要的实际列名,你需要替换为你的表中的实际列名。
阅读全文