Mysql 有没有一种使用sql获取最佳记录的方法
在一个拥有数百万条记录的数据库中,是否有可能获取最好的记录(即具有最多填充列的行) 是否可以将这两条记录合并为一条?例如Mysql 有没有一种使用sql获取最佳记录的方法,mysql,sql,database,Mysql,Sql,Database,在一个拥有数百万条记录的数据库中,是否有可能获取最好的记录(即具有最多填充列的行) 是否可以将这两条记录合并为一条?例如 SEQ_ID | PERSON_ID | GENDER | DOB | COUNTRY 1 | A000001 | Male | 01-01-1970 | Indonesia 在您的示例中,您可以使用聚合: select MIN(SEQ_ID), PERSON_ID, MAX(GENDER), MAX(DOB), MAX(COUNTRY) f
SEQ_ID | PERSON_ID | GENDER | DOB | COUNTRY
1 | A000001 | Male | 01-01-1970 | Indonesia
在您的示例中,您可以使用聚合:
select MIN(SEQ_ID), PERSON_ID, MAX(GENDER), MAX(DOB), MAX(COUNTRY)
from t
group by PERSON_ID;
目前尚不清楚这是否会对您的数据起到普遍作用,但这确实回答了您提出的问题。如果这不起作用,您应该提出一个新问题,提供更合适的数据和您想要使用的逻辑解释。我们不清楚您的问题定义。请告诉我们你到底想要实现什么,你尝试了什么?你的第一个问题对我来说不够清楚。第二个答案是肯定的。您可以尝试的最简单的方法是将表本身左键联接。选择T1.ID,T1.PERSON\u ID,NVL(T1.GENDER,T2.GENDER)作为性别,NVL(T1.DOB,T2.DOB)作为DOB,NVL(T1.COUNTRY,T2.COUNTRY)作为国家/地区,从表名称T1左键联接表名称T2。PERSON\u ID=T2.PERSON\u ID和T1.SEQ\ID T2.SEQ\u ID
select MIN(SEQ_ID), PERSON_ID, MAX(GENDER), MAX(DOB), MAX(COUNTRY)
from t
group by PERSON_ID;