选择sybase ase中id值最高的记录

Posted

技术标签:

【中文标题】选择sybase ase中id值最高的记录【英文标题】:select the record with the highest id value in sybase ase 【发布时间】: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

【问题讨论】:

【参考方案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 找到了更多信息,而不是我最常用的数据库。

以上是关于选择sybase ase中id值最高的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SAP ASE Sybase 16 中从具有外键的表中删除行

选择除最高记录外的所有记录

sybase ase 怎样修改表的所有者

在每个商店国家部分中选择出生值最高的行

选择日期值最高的对(包括倒序)

当给定记录的级别是随机的时选择最高关联