【问题标题】:select the record with the highest id value in sybase ase选择sybase ase中id值最高的记录
【发布时间】:2015-09-01 17:27:18
【问题描述】:

我有这个问题

选择 Reg.id_Movimiento,Tip.NombreTipoMov FROM ut_sgt_Movimientos_t Reg INNER JOIN ut_sgt_TiposMovimientos_m 提示 ON Reg.id_TipoMov = Tip.id_TipoMov 哪里 Reg.id_Registro = 367

有了这个输出:

8 Retiro
6 Marcaje
7 Porteador
5 Descarga
1 Almacenaje

如何选择id值最高的记录?

我不能使用子查询,设置 rowcount 或 top 1,只能聚合函数,有或 group by

我试过了:

选择 Reg.id_Movimiento,Tip.NombreTipoMov FROM ut_sgt_Movimientos_t Reg INNER JOIN ut_sgt_TiposMovimientos_m 提示 ON Reg.id_TipoMov = Tip.id_TipoMov 哪里 Reg.id_Registro = 367 有 Reg.id_Movimiento = MAX(Reg.id_Movimiento)

但是输出是

8 Retiro
8 Marcaje
8 Porteador
8 Descarga
8 Almacenaje

【问题讨论】:

    标签: sql sybase sap-ase


    【解决方案1】:

    好吧,既然你指定了你不能使用的东西,我会假设其他一切都是公平的游戏。

    SET ROWCOUNT 1
    
    SELECT      Reg.id_Movimiento, Tip.NombreTipoMov
    FROM        ut_sgt_Movimientos_t Reg
    INNER JOIN  ut_sgt_TiposMovimientos_m Tip
                ON Reg.id_TipoMov = Tip.id_TipoMov
    WHERE       Reg.id_Registro = 367
    ORDER BY Re.ID DESC
    
    SET ROWCOUNT 0
    

    【讨论】:

    • 出于好奇,该约束的来源是什么?
    • 我需要这个 select 语句嵌套在另一个 select 语句中,sybase 不允许我使用子查询、设置 rowcount 或 top 1。
    【解决方案2】:

    我很确定 HAVING 需要与 Group By 函数一起使用。

    SELECT      Reg.id_Movimiento, Tip.NombreTipoMov
    FROM        ut_sgt_Movimientos_t Reg
    INNER JOIN  ut_sgt_TiposMovimientos_m Tip
                ON Reg.id_TipoMov = Tip.id_TipoMov
    WHERE       Reg.id_Registro = 367
    GROUP FILTER rank() < 1
    GROUP BY Reg.id_Movimiento, Tip.NombreTipoMov
    GROUP ORDER BY Reg.id_Movimiento desc
    HAVING      Reg.id_Movimiento = MAX(Reg.id_Movimiento)
    

    为 Sybase 找到更多信息

    【讨论】:

    • 是的,我之前尝试过,但这是输出:5 Descarga 6 Marcaje 8 Retiro 1 Almacenaje 7 Porteador
    • @HermanZun 为 Sybase 找到了更多信息,而不是我最常用的数据库。
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多