1

我在这里有这个查询select distinct id, FirstName, LastName from table

这会返回一个人员列表,首先一些 id 会返回重复项,但我曾经distinct解决过这个问题,但我仍然有一个问题,而且其中一些人是重复项。

是否还可以在名字和姓氏以及身份证上进行区分?(有些结果没有ID)

结果(没有不同的 id):

id - 01 - firstname - james - lastname - smith
id - 01 - firstname - james - lastname - smith
id - 02 - firstname - john - lastname - hicks
id - 02 - firstname - john - lastname - hicks
id -    - firstname - tom - lastname - nicks
id -    - firstname - tom - lastname - nicks

期待:

id - 01 - firstname - james - lastname - smith
id - 02 - firstname - john - lastname - hicks
id -    - firstname - tom - lastname - nicks
4

1 回答 1

6

您有重复项,因为您包含idselect

select distinct FirstName, LastName
from table;

如果您需要id一个名称,请使用group by

select min(id) as id, FirstName, LastName
from table
group by FirstName, LastName;

编辑:

如果这些查询仍然重复,那么您的名称中有一些字符会引起问题。我将首先修剪前导和尾随空格,看看这是否解决了重复问题:

select min(id) as id, trim(FirstName) as FirstName, trim(LastName) as LastName
from table
group by trim(FirstName), trim(LastName);
于 2013-08-02T19:14:14.257 回答