我想问个问题  就是 出现这样的 格式 
    code   name   ax    ay    link
 
   1001     dd    11     33    http://google.cn
   1001     dd    22     33    kkkkk
    1002     ss     ff    ss    kjjljlj
   1003     ww    f2f     dfs   jkjljlkj 
   1003     ww    jkjl   jljljk jljljljl   我想写 一 SQL 语句,,查询  只有一条的数据  比如1001有 两条 ,,但我只想取其 1条。。  这样的 SQL 语句如何写呢???
  请大家 能多帮帮忙,,在线等。。谢谢大家了。。

解决方案 »

  1.   

    SELECT * FROM (
    SELECT ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY CODE) 'ID',* FROM TB
    ) T WHERE ID=1
      

  2.   

    select * from table group by code
    主要是要group by
      

  3.   

    select top 1 code,name,ax,ay,link from table where code='1001'
      

  4.   

      --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([code] int,[name] varchar(2),[ax] varchar(4),[ay] varchar(6),[link] varchar(16))
    insert [TB]
    select 1001,'dd','11','33','http://google.cn' union all
    select 1001,'dd','22','33','kkkkk' union all
    select 1002,'ss','ff','ss','kjjljlj' union all
    select 1003,'ww','f2f','dfs','jkjljlkj' union all
    select 1003,'ww','jkjl','jljljk','jljljljl'select * from [TB]
    SELECT code,MAX(NAME),MAX(ax),MAX(ay),MAX(link)
    FROM tb
    GROUP BY code/*
    code                         
    ----------- ---- ---- ------ ----------------
    1001        dd   22   33     kkkkk
    1002        ss   ff   ss     kjjljlj
    1003        ww   jkjl jljljk jljljljl(3 行受影响)
    */???
      

  5.   

    --需求没说清楚 取一条的规则呢?--如果是任意的 
    select k.*
    from tb a cross apply 
    (select top 1 * from tb where a.code=code order by GETDATE()) k当然05可以使用临时表 
    apply的写法效率没2L的好~
      

  6.   

    select distinct k.*
    from tb a cross apply 
    (select top 1 * from tb where a.code=code order by ax) k
    /*
    code        name ax   ay     link
    ----------- ---- ---- ------ ----------------
    1001        dd   11   33     http://google.cn
    1002        ss   ff   ss     kjjljlj
    1003        ww   f2f  dfs    jkjljlkj*/
      

  7.   

    你那个数据太多了,我自己建了个测试表,你看看方法自己改改行了。我这个写法只在2005以上能用,与其它列无关。
    IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
    GO
    CREATE TABLE TB(COL1 INT,COL2 INT)
    INSERT INTO TB
    SELECT 1,1 UNION ALL
    SELECT 1,2 UNION ALL
    SELECT 3,4 UNION ALL
    SELECT 3,2 UNION ALL
    SELECT 4,3 UNION ALL
    SELECT 5,NULL SELECT COL1,COL2 FROM (
    SELECT 
    'ID'=ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL1) 
    ,* FROM TB
    ) T WHERE ID=1
    /*
    COL1        COL2
    ----------- -----------
    1           1
    3           4
    4           3
    5           NULL
    */