SQL区别但不是那么明显的查询

时间:2012-06-15 15:24:25

标签: sql select distinct

也许我过于复杂了......

我只需要一个“简单”查询来选择一列,但只返回不同的行。
这是关键,如果它们相似,则需要排除它们,而不仅仅是完全匹配。

例如,这是我当前的查询

select distinct channel from audio_srcs order by channel

诀窍是返回类似下面的内容

Channel
--------
1001
1003
1003 <Description@unitid>
1004
1004 <Description@unitid>

我想要显示1003行中的唯一一行,以及1004行中的一行(例如)。我不关心它返回哪一个。

我想要的最终结果如下:

Channel
---------
1001
1003
1004
etc.

2 个答案:

答案 0 :(得分:7)

SELECT distinct left(Channel, 4) as Channel  --  or maybe first 5 characters
 from audio_srcs
 order by channel 

答案 1 :(得分:3)

我会把分隔符作为区别。您只需要列中的第一个标记:

SELECT distinct left(Channel,
                     (case when charindex(' ', channel) <= 0 then len(channel)
                           else charindex(' ', channel)
                      end
                     )
                    ) as Channel  --  or maybe first 5 characters
from audio_srcs
order by channel 

我已经使用了SQL Server版本的字符串函数。