开门见山!我有两个表:
Tbl_Dev           Tbl_Data
No  ID  Para      ID  Time        Data
1   a   x1        a   2009-09-24  30
1   b   x2        a   2009-09-23  28
2   c   x3        b   2009-09-24  31
2   d   x4        b   2009-09-23  32
                  c   2009-09-24  33
                  c   2009-09-23  29
                  d   2009-09-24  31
                  d   2009-09-23  20想查询出某一个指定No下所有ID的各自的最新数据(Data)和参数(Para)。如No=1时查询结果应该为
ID  Para  Time        Data
a   x1    2009-09-24  30
b   x2    2009-09-24  31SQL查询语句应该怎么写呢?先谢过大家了!

解决方案 »

  1.   

    select Tbl_Dev.ID, Tbl_Dev.Para, Tbl_Data.Time, Tbl_Data.Data
      from Tbl_Dev, Tbl_Data
      where Tbl_Dev.ID = Tbl_Data.ID
        and Tbl_Dev.No = 1
      

  2.   

    如果只是No=1,出来的结果是:
     a  2009-09-24  30 
     a  2009-09-23  28 
     b  2009-09-24  31 
     b  2009-09-23  32 必须再加一个条件(Tbl_Data.Time= '2009-09-24')才可达到你的要求SELECT Tbl_Data.ID,Tbl_Data.Time,Tbl_Data.Data 
    FROM Tbl_Dev INNER JOIN
        Tbl_Data ON Tbl_Dev.ID= Tbl_Data.ID
    WHERE (Tbl_Dev.No = '1') AND (Tbl_Data.Time= '2009-09-24')
      

  3.   

    Tbl_Data.Time的条件不是固定的'2009-09-24',明天产生记录了就应该是明天了,要的是最新的!怎么利用一下SQL的max函数?
      

  4.   

    select Tbl_Dev.ID,Tbl_Dev.Para,Tbl_Data.Time,Tbl_Data.Data
    from Tbl_Dev,Tbl_Data,(select Id,max(Time) Time from Tbl_Data group by ID )s 
    where Tbl_Dev.ID=Tbl_Data.ID and s.ID=Tbl_Dev.ID and s.Time=Tbl_Data.Time and Tbl_Dev.No=1
      

  5.   

    select a.ID,a.Para,max(b.Time) as Time,b.Data from Tbl_Dev a,Tbl_Data b where a.No=1 and a.ID=b.ID group by a.ID,a.Para,b.Data
      

  6.   

    不太明白,希望能给小弟解释一下。直接拷贝上述代码运行出错!max(Time) Time 之间应为逗号吧,改成逗号还是出错!
      

  7.   

    select Tbl_Data.* from Tbl_Data inner join Tbl_Dev on Tbl_Data.id=Tbl_Dev.id where Tbl_Dev.No = 1
      

  8.   

    max(Time) as Time 試試,我的沒試過的
      

  9.   


    - -#  max(Time) Time 是别名啊 不用逗号的啊 要不你加中括号行了 这样 max([Time]) [Time] 
      

  10.   

    select top 1 Tbl_Dev.ID,Para,Tbl_Data.Time,Data
    from Tbl_Dev
    left join Tbl_Data on Tbl_Dev.ID=Tbl_Data.ID
    where Tbl_Dev.No=1
    order by Tbl_Data.Time DESC
      

  11.   

    最新日期SELECT B.A2, B.A3, B.A4
    FROM A INNER JOIN
        B ON A.A2 = B.A2
    WHERE (A.A1 = '1') AND (B.A3 = CONVERT(varchar(10), GETDATE(), 120))
      

  12.   

    上面是我测试的下面改为你用的
    SELECT Tbl_Data.ID,Tbl_Data.Time,Tbl_Data.Data 
    FROM Tbl_Dev INNER JOIN 
        Tbl_Data ON Tbl_Dev.ID= Tbl_Data.ID 
    WHERE (Tbl_Dev.No = '1') AND (Tbl_Data.Time= CONVERT(varchar(10), GETDATE(), 120))
      

  13.   

    max([Time]) as [Time] 这样可以了,蜗牛很牛!谢谢!