在SQL中创建唯一列表

问题描述:

我有一个具有重复数据的表。在SQL中创建唯一列表

这是我现在的表

Id Name 
1 shahin Zen 
2 shahin Zen & Aaron Henley 
3 Fred Sayz feat. Antonia Lucas 
4 Fred Sayz feat. Lawrence Alexander 
5 Fred Sayz feat. Sibel 

注:我不能用不同的名字怎么一回事,因为还没有完全匹配。

我想打一个表格形式列出这张表像,

ID Name 
1 shahin 
2 Fred 

请人解决这类问题。

感谢推进

+0

是只列出名字的要求? – SchmitzIT 2013-02-08 14:51:06

,如果你只是想获得的行不同的第一句话就是:

select distinct substring(Name, 0, charindex(' ', Name, 0)) 
from myTable 

你也可以添加对行的检查,它通过添加where子句包含空格字符:

where charindex(' ', myTable, 0) > 0 
+0

非常感谢你 – user1928185 2013-02-08 15:35:41

+0

不客气,但请标记正确的答案,如果你从他们受益:) – Noxthron 2013-02-08 15:41:10

+0

@Noxthron upvoting你的,因为它帮助OP,但你可以补偿缺乏一个空间通过追加一个varchar你是CharIndexing。 – 2013-02-08 16:11:28

如果你只需要第一个名字,试试这个:

SELECT 
    LEFT(name, CHARINDEX(' ', name)) 
FROM Table1 
GROUP BY LEFT(name, CHARINDEX(' ', name)) 

你需要考虑的是没有空间的记录...

Select Distinct Left(name,CharIndex(' ',name+' ')) 
From myTable