SQL获得不同的名字和姓氏

use*_*201 1 mysql sql distinct

我在这里有这个问题 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
Run Code Online (Sandbox Code Playgroud)

期待:

id - 01 - firstname - james - lastname - smith
id - 02 - firstname - john - lastname - hicks
id -    - firstname - tom - lastname - nicks
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

你有重复,因为你包括idselect:

select distinct FirstName, LastName
from table;
Run Code Online (Sandbox Code Playgroud)

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

select min(id) as id, FirstName, LastName
from table
group by FirstName, LastName;
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您仍然在使用这些查询重复,那么您的名称中的字符会丢弃.我将首先修剪前导和尾随空格,看看这是否修复了重复问题:

select min(id) as id, trim(FirstName) as FirstName, trim(LastName) as LastName
from table
group by trim(FirstName), trim(LastName);
Run Code Online (Sandbox Code Playgroud)

  • 那些不是重复的.您的数据中有重复项.你先生有糟糕的数据.这是你的问题.与众不同的是,做得与广告完全一样. (3认同)
  • id不是你桌子的主键吗?如果是这样,记录怎么没有id? (3认同)