要删除表中的重复记录,可以使用以下 SQL 语句:从身份证号推算出年龄和性别
时间: 2023-06-18 12:03:51 浏览: 76
删除表中重复记录的 SQL 语句如下:
```sql
DELETE FROM 表名
WHERE 主键列名 NOT IN
(SELECT MIN(主键列名)
FROM 表名
GROUP BY 去重列名1, 去重列名2, ...)
```
其中,主键列名是表中的唯一标识列,去重列名是需要去重的列。这个语句会保留每组去重列名的第一条记录,并删除其余重复记录。
关于从身份证号推算出年龄和性别,可以使用以下 SQL 语句:
```sql
SELECT
CASE
WHEN LENGTH(身份证号) = 15 THEN
CONCAT('19', SUBSTR(身份证号, 7, 2))
WHEN LENGTH(身份证号) = 18 THEN
CONCAT(SUBSTR(身份证号, 7, 4))
ELSE
NULL
END AS 出生年份,
CASE
WHEN MOD(SUBSTR(身份证号, 15, 1), 2) = 0 THEN
'女'
ELSE
'男'
END AS 性别
FROM 表名
```
其中,通过身份证号的长度判断出生年份的位置,然后使用 SUBSTR 函数截取出生年份的值。性别则是通过身份证号的第 15 位数字判断,如果是偶数则为女性,奇数则为男性。