gpt4 book ai didi

mysql - 如何使用 MySQL 显示表中的唯一记录

转载 作者:可可西里 更新时间:2023-11-01 08:23:20 28 4
gpt4 key购买 nike

我正在尝试显示表中的所有唯一记录。

SQL 脚本:

CREATE TABLE certificate(
id INT PRIMARY KEY,
full_name VARCHAR(200),
address VARCHAR(200),
date_of_birth DATETIME,
special_code INT,
validity VARCHAR(200)
);

INSERT INTO certificate VALUES('1','Walter White','Albuquerque 87107','1970-10-10','1000','VALID');
INSERT INTO certificate VALUES('2','Skyler White','Albuquerque 87107','1978-10-10','1001','VALID');
INSERT INTO certificate VALUES('3','Jesse Pinkman','Santa Fé 28','1979-10-10','1002','INVALID');
INSERT INTO certificate VALUES('4','Hank Schrader','El Paso 17','1980-10-10','1003','VALID');
INSERT INTO certificate VALUES('5','Hank Schrader','El Paso 17','1980-01-10','1004','VALID');
INSERT INTO certificate VALUES('6','Walter White','Albuquerque 87107','1970-10-10','1005','VALID');
INSERT INTO certificate VALUES('7','Saul Goodman','El Paso 14','1973-10-10','1006','VALID');
INSERT INTO certificate VALUES('8','Gustavo Fring','Santa Fé 190','1964-10-11','1007','INVALID');
INSERT INTO certificate VALUES('9','Walter White','Albuquerque 87107','1978-01-08','1008','VALID');
INSERT INTO certificate VALUES('10','Hank Schrader','El Paso 17','1980-10-10','1009','VALID');
INSERT INTO certificate VALUES('11','Walter White','Albuquerque 87107','1978-01-08','1010','VALID');
INSERT INTO certificate VALUES('12','Hank Schrader','El Paso 98','1980-10-10','10011','VALID');
INSERT INTO certificate VALUES('13','Hank Schrader','El Paso 98','1980-10-10','10012','VALID');

查询:

具有有效证书的特殊代码项数

select full_name, count(*) from certificate where validity = 'VALID' group by full_name;

所有持有效证件者

select * from certificate where validity = 'VALID' order by full_name;

有两个人有这个名字,但他们住在不同的地址,所以我们可以假设这不是同一个人,第一次选择的结果是“不正确的”

select * from certificate where validity = 'VALID' and full_name = 'Hank Schrader';

在这个选择中有三个记录属于两个人的父亲和儿子。他们住在同一地址但出生日期不同第一次选择的结果太“不正确”

select * from certificate where validity = 'VALID' and full_name = 'Walter White';

所以我需要:

  • 如果名称相同,我会检查地址与其他条目在具有相同名称的表中。
  • 如果地址相同,我会使用表中的其他条目检查出生日期一样的名字。
  • 如果是,则为同一人,否则,人是不同的,只有

那我可以添加记录吗

最终,我需要一份所有具有有效证书且在表中有多个条目的唯一人员的列表(ID 11 的 Walter White 与 ID 8 的 Walter White 不代表同一个人)

所以结果将是:

full_name     | ids
----------------------
Walter White | 1,6
Walter White | 9,11
Hank Schrader | 4,5,10
Hank Schrader | 12,13

完整代码可在: http://sqlfiddle.com/#!9/71c251/1

最佳答案

您可以在下面尝试 - 使用 full_name,address,date_of_birth

分组

DEMO

select full_name,
count(id) from certificate where validity = 'VALID'
group by full_name,address,date_of_birth having count(id)>1

关于mysql - 如何使用 MySQL 显示表中的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57181335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com