MySQL 查出多条 根据身份证号保留一条
时间: 2023-10-02 20:09:55 浏览: 45
如果需要在 MySQL 中查出多条数据,并且需要根据身份证号进行去重,保留一条记录,可以使用以下 SQL 语句:
```
SELECT *
FROM table_name
GROUP BY id_card_number;
```
其中,table_name 是要查询的表格名称,id_card_number 是要根据其进行去重的列名。
这条 SQL 语句会将 table_name 表格中的数据按照 id_card_number 列进行分组,然后对每个分组保留一条记录,最终得到去重后的结果。需要注意的是,由于这里是保留一条记录,所以无法保证保留的是哪一条记录,如果需要保留指定的记录,可以在 SQL 语句中使用其他关键字和条件进行过滤。
相关问题
mysql根据身份证号和人员编号保留时间最小的一条数据,其他的删除
可以使用以下SQL语句实现:
```
DELETE FROM your_table
WHERE (id_card, person_id, reserve_time) NOT IN
(SELECT id_card, person_id, MIN(reserve_time)
FROM your_table
GROUP BY id_card, person_id)
```
这条SQL语句会删除表中除了每个身份证号和人员编号对应的最小保留时间之外的所有数据。请将 `your_table` 替换为你的表名,`id_card` 和 `person_id` 替换为你的身份证号和人员编号字段名,`reserve_time` 替换为你的保留时间字段名。
mysql实现根据身份证号和人员编号保留时间最小的一条数据,其他的删除
可以通过以下 SQL 语句实现:
```
DELETE FROM table_name
WHERE id NOT IN (
SELECT id FROM (
SELECT id FROM table_name
WHERE (身份证号, 人员编号, 保留时间) IN (
SELECT 身份证号, 人员编号, MIN(保留时间)
FROM table_name
GROUP BY 身份证号, 人员编号
)
) AS temp
)
```
其中,`table_name` 是要操作的表名,`身份证号`、`人员编号` 和 `保留时间` 分别是对应的列名。这个语句会保留每个身份证号和人员编号组合中保留时间最小的一条数据,并删除其他数据。请注意备份数据以避免误操作。