从列中选择Distinct value并返回所有行

时间:2013-07-02 19:49:29

标签: sql sql-server

我正在尝试从列中选择不同的值,但返回与所选值相关的所有行。在伪代码中它看起来像这样。

SELECT * 
FROM table
WHERE field is Distinct 

我用Google搜索了问题,我尝试使用GROUP BY,但查询从未执行过。谢谢你的帮助。

我正在使用Microsoft SQL数据库。

数据如下所示:

CodeId   Code   CatalogType    CodeGroup  CodeText  CodeGroupText  CodeDesc  State_ID
-------  -----  -------------  ---------- --------  -------------- --------- ---------
1        AAAA    1             100         Plastic   Plastic Center  NULL      2
2        BBBB    1             100         Glass     Glass Center    NULL      2
3        CCCC    1             101         Steel     Steel Center    NULL      2

我只想让数据在代码组不同的地方看起来一样。

数据看起来像这样:

CodeId   Code   CatalogType    CodeGroup  CodeText  CodeGroupText  CodeDesc  State_ID
-------  -----  -------------  ---------- --------  -------------- --------- ---------
1        AAAA    1             100         Plastic   Plastic Center  NULL      2
3        CCCC    1             101         Steel     Steel Center    NULL      2

4 个答案:

答案 0 :(得分:3)

在大多数数据库中,您可以这样做:

select t.*
from (select t.*
             row_number() over (partition by field order by field) as seqnum
      from t
     ) t
where seqnum = 1

答案 1 :(得分:3)

您始终可以使用子查询为每个min(codeid)返回codegroup,并将此结果加入到您的表中:

select t1.codeid,
    t1.code,
    t1.catalogtype,
    t1.codegroup,
    t1.codetext,
    t1.codegrouptext,
    t1.codedesc,
    t1.state_id
from yourtable t1
inner join
(
    select MIN(codeid) codeid, codegroup
    from yourtable
    group by codegroup
) t2
    on t1.codeid = t2.codeid
    and t1.codegroup = t2.codegroup

答案 2 :(得分:0)

SELECT field1,field2,max(field3),sum(field4)
FROM table
GROUP BY field1, field2

这将为您提供所有不同的field1和field2。您无法直接获取field3字段(使用此分组),因为可能有多个field3。

答案 3 :(得分:0)

如果您只需要列中的不同值,即在一列中查找一组唯一值,那么此代码可以帮助您(至少对于sql server):

select distinct
    columnName
from tableT