代码之家  ›  专栏  ›  技术社区  ›  haxx

从sql中的表中选择最后一条记录

  •  -3
  • haxx  · 技术社区  · 8 年前

    我在一个sql表中有三列,看起来像cars表中的TYPE | REGISTRATION NR.| ID。 在类型栏中,是宝马、梅赛德斯等车型,在注册号中是注册号AB77TRR、UTYIE77等,在ID中,顾名思义,是ID 12、13、14等。 问题是,在ID列中,同一型号和注册可以有多个ID,如:

    BMW AB77TRR 12  
    BMW AB77TRR 13  
    BMW AB77TRR 14
    

    大多数列只有一个id,但也有一些列有更多id,我只想选择最后一个注册的列,不能使用限制1或顶部1。

    如果我运行此select select type,registration nr.,id from cars where type in(宝马、梅赛德斯、奥迪、保时捷),它将显示表id中的所有记录,我只想显示最后一个id。 例如,如果我运行这个select–select type,registration nr.,id from cars where type in(bmw,mercedes),它将显示:

    BMW      AB77TRR 12  
    BMW      AB77TRR 13  
    BMW      AB77TRR 14   
    MERCEDES UTYIE77 11
    

    我想看起来像:

    BMW      AB77TRR 14 
    MERCEDES UTYIE77 11 
    

    提前谢谢你。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Daniel E.    8 年前

    你应该学习 SQL 基础知识来源 W3schools 举例来说,无论如何,这是聚合函数MAX的一个经典案例:

    SELECT type, registration, MAX(id) FROM cars GROUP BY  type, registration
    
        2
  •  1
  •   jarlh    8 年前

    使用子查询返回每个类型的最大id。使用该结果进行连接:

    select c1.*
    from carstable c1
    join (select TYPE, max(id) as maxid
          from carstable 
          group by type) as c2
      on c1.TYPE = c2.TYPE and c1.id = c2.maxid