SELECT distinct biaohao,factory,xinghao,dianliu,hege
FROM hbiao
WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
ORDER BY biaohao,factory,xinghao,dianliu,hege
我想查找出以biaohao为索引的所有第一次出现的记录。用上面的语句不能实现,请问有谁能做到吗?

解决方案 »

  1.   

    DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行
      

  2.   

    //试试这样
    SELECT biaohao,factory,xinghao,dianliu,hege
    FROM hbiao 
    where Biaohao in
    (
    SELECT biaohao
    FROM WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    )
    ORDER BY biaohao
      

  3.   

    distinct 就是把重复的记录去掉,应该是可以的
      

  4.   

    SELECT distinct biaohao,factory,xinghao,dianliu,hege
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    Group BY biaohao
      

  5.   


    试试这个^_^SELECT distinct biaohao,MAX(jyriqi) AS jyriqi
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    ORDER BY biaohao
      

  6.   

    SELECT distinct biaohao,factory,xinghao,dianliu,hege
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    Group BY biaohao having(count(biaohao)=1)用having count(biaohao)=1 可以找出不重复Biaohao的记录,但不包括重复biaohao而第一次出现的记录
      

  7.   

    用group by不就不会重复了吗?
      

  8.   

    用distinct是怎么不行?查出结果了吗?查出的结果是什么?
      

  9.   

    哦,懂你的意思。
    select *from hbiao  z where exists(select *from (select min(bianhao) as bianhao1 from hbiao group by 
    biaohao,factory,xinghao,dianliu,hege) where bianhao1=z.bianhao)就搞定
      

  10.   

    to  firestars(烦) :你的语句出现incorrect ...the keyword 'where'错误提示.to hongqi162(失踪的月亮):用distinct查出的结果中biaohao还是有重复的数据出现。原表数据记录如:
    biaohao  factory xinghao dianliu hege jyriqi
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-02 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000002    绍兴   DD202    5(30)   T   2003-10-20  
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    我要的结果是:
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000005    绍兴   DD202    5(30)   T   2003-10-21 
      

  11.   

    我的语句查出来的结果是所有满足where的数据,包括重复和不重复的.
      

  12.   

    SELECT biaohao,factory,xinghao,dianliu,hege
    FROM hbiao 
    where Biaohao in
    (
    SELECT distinct biaohao 
    FROM WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    )
    ORDER BY biaohao
    这样好象可以
      

  13.   

    这样可以吗?
    SELECT biaohao,factory,xinghao,dianliu,hege
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01') group by biaohao
    ORDER BY biaohao,jyriqi,factory,xinghao,dianliu,hege
      

  14.   

    你把我的语法给改一下不就的了???我的当中的一个*给和from写在一起了,
      

  15.   

    to  wuliangxia(liang):group by 后面的分组不全;
    to  pdbird(老巢) :from 子句错误.
      

  16.   

    试试这样吧:SELECT biaohao,factory,xinghao,dianliu,hege
    FROM hbiao 
    where jyriqi in
    (
    SELECT biaohao,min(jyriqi)jyriqi biaohao 
    FROM WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    group by biaohao
    )
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')----------------
    where ...in里是找出 以找出以biaohao为分组的最小日期数据
      

  17.   

    补充:
    把:SELECT biaohao,min(jyriqi)jyriqi biaohao 
    改成:SELECT biaohao,min(jyriqi)jyriqi
      

  18.   

    我觉得大家都给了你相当的思路,或者要适合你的要求可能你自己要加以修正,因为这其中的要求你最清楚,我给出在mysql上可以通过,还不知你用的是什么数据库.根据相关的语法作些修改应该你可以搞定的.
      

  19.   

    如果上面不行,下面是我测过可以的:
    SELECT distinct biaohao,factory,xinghao,dianliu,hege
    FROM hbiao a
    where exists
    (
    select * from (
    SELECT biaohao,min(jyriqi)jyriqi
    FROM WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    group by biaohao
    ) b
    WHERE (a.factory = b.factory) AND (a.jyriqi=b.jyriqi)
    )
      

  20.   

    to XXSingle(水连天):如果同一天有好几条biaohao相同的数据呢?
      

  21.   

    SELECT distinct biaohao,factory,xinghao,dianliu,hege
    FROM hbiao a,
    (
    SELECT biaohao,min(jyriqi) as jyriqi
    FROM WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    group by biaohao
    ) b
    WHERE (a.biaohao=b.biaohao and a.factory = b.factory) AND (a.jyriqi=b.jyriqi)
      

  22.   

    to  kingting(萧羽) :b中没factory
      

  23.   

    to wuliangxia(liang):我在提问前已用过很多方法,跟各位说的思路差不多,但就是没法达到目的。
      我用的是sqlserver2000数据库.
      

  24.   

    to XXSingle(水连天), kingting(萧羽),pdbird(老巢) :
        子查询中from后为什么没有表名?这样要提示错误,加上呢,得的结果却又不对。
      

  25.   

    可能是原数据不够清楚,再多加几条记录,麻烦各位再帮帮忙!
    原表数据记录如:
    biaohao  factory xinghao dianliu hege jyriqi
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-02 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000002    绍兴   DD202    5(30)   T   2003-10-20  
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    000002    绍兴   DD202    5(30)   F   2003-10-20  
    000005    绍兴   DD202    5(30)   F   2003-10-21 我要的结果是:
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    所得结果全部是第一次出现的记录。
      

  26.   

    其实说的Top是不合理当索引改动之后,  你的第一条记录就变了,  你的意思实际是要最早时间的
    SELECT 
      * 
    FROM
      yourtable t1
      INNER JOIN 
      (
      SELECT
        biaohao, factory, xinghao, dianliu , min(jyfiqi) AS jyfiqi
      FROM 
        yourtable
      GROUP BY 
        biaohao, factory, xinghao, dianliu , min(jyfiqi) 
      ) AS t2
      ON t1.biaohao = t2.biaohao AND t1.factory = t2.factory 
         t1.xinghao = t2.xinghao AND t1.dianlin = t2.dianliu
         AND t1.yffiqi = t2. jyfiqi
      

  27.   

    不好意思上面GROUP BY 多了一个 min(jyfiqi)
      

  28.   

    try itselect distinct * from hbiao A
    where A.jyfiqi=(select top 1 B.jyriqi from hbiao B where B.hbiao=A.hbiao)--if you want select min(jyriqi) please change it
      

  29.   

    of cource
    select distinct * from hbiao A
    where A.jyfiqi=(select top 1 B.jyriqi from hbiao B where B.hbiao=A.hbiao and (B.factory = '绍兴') AND (B.jyriqi >= '2003-10-01')
    ) and (A.factory = '绍兴') AND (A.jyriqi >= '2003-10-01')
      

  30.   

    i have tried it . and it work well.
      

  31.   

    SELECT biaohao,factory,xinghao,dianliu,hege
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01') AND (id IN (SELECT distinct biaohao FROM hbiao))
    ORDER BY biaohao,factory,xinghao,dianliu,hege
      

  32.   

    mnidxy(break)的结果比较接近,但没有考虑到hege是否相同,或者其它字段中的数据是否相同。所得结果是:
    biaohao  factory xinghao dianliu hege jyriqi
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    000005    绍兴   DD202    5(30)   F   2003-10-21 
    显然还有biaohao相同的数据
      

  33.   

    leijinhe(雷) :
    你到底试了我的没有?
    SELECT distinct biaohao,MAX(jyriqi) AS jyriqi
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    ORDER BY biaohao
      

  34.   

    to zzh54zzh(我也要补钙!) :
       你可能还没理解我意思,我的目的是要取biaohao第一次出现的所有数据,数据取出后biaohao不能重复。而你的结果只有biaohao和jyriqi.
      

  35.   

    你多写几个啊~  ^_^
    这回你试试~
    SELECT distinct biaohao,MAX(jyriqi) AS jyriqi,factory ,xinghao, dianliu, hege 
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    ORDER BY biaohao
      

  36.   

    to zzh54zzh(我也要补钙!) :
       你的方法得来的结果肯定有biaohao重复的记录,我第一次就是这样做的。现说后面不能用order by ,只能用group by
      

  37.   

    sorry 是group by! 我以前用过
    你看看这个
    多个字段时:
    SELECT DISTINCT Field1, MAX(Field2) AS Field2
    FROM table1
    GROUP BY Field1单个字段时:
    SELECT DISTINCT Field1
    FROM table1
    这样再试一下^^
    SELECT distinct biaohao,jyriqi,Max(factory) as factory ,xinghao, dianliu, hege 
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    GROUP BY biaohao
      

  38.   

    to zzh54zzh(我也要补钙!) :
       应该写成
    SELECT distinct biaohao,jyriqi,Max(factory) as factory ,xinghao, dianliu, hege 
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    GROUP BY biaohao,jyriqi,factory,xinghao,dianliu,hege 
    才没有语句错,但不是我要的结果。
      

  39.   

    这回真出来了,我这边已经测试通过了:
    SELECT distinct biaohao,Max(jyriqi) as jyriqi,Max(factory) as factory ,Max(xinghao) as xinghao, Max(dianliu) as dianliu, Max(hege) as hege 
    FROM hbiao
    WHERE (factory = '绍兴') AND (jyriqi >= '2003-10-01')
    GROUP BY biaohao
      

  40.   

    回楼主:刚我的写法却实是以天为计算单位,它可以求出同一biaohao,最早的一天输入的
    单子;
    据你所说,一天中你输入多条,那你的字段就不够了;应该还加个时间才行;
    这样就可以区分最早的一天中的第一条单子了
    写法一样................................
      

  41.   

    to zzh54zzh(我也要补钙!) :
       这样做是否把原数据给更改了,虽然biaohao是唯一,但我想得到第一条原始记录中的原数据.比如
    biaohao  factory xinghao dianliu hege jyriqi
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-02 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000002    绍兴   DD202    5(30)   T   2003-10-20  
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    000002    绍兴   DD202    5(30)   F   2003-10-20  
    000005    绍兴   DD202    5(30)   F   2003-10-21 
    用你的方法得到的结果是:
    000001    绍兴   DD202    5(30)   T   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    很显然,000001第一次出现的hege结果是F,而非T.
      

  42.   

    你的数据集显示的有什么规律?
    下面的这个?
    000001    绍兴   DD202    5(30)   F   2003-10-01 
    000002    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-02 
    000003    绍兴   DD202    5(30)   F   2003-10-01 
    000001    绍兴   DD202    5(30)   T   2003-10-01 
    000004    绍兴   DD202    5(30)   F   2003-10-20
    000002    绍兴   DD202    5(30)   T   2003-10-20  
    000005    绍兴   DD202    5(30)   T   2003-10-21 
    000002    绍兴   DD202    5(30)   F   2003-10-20  
    000005    绍兴   DD202    5(30)   F   2003-10-21