选择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值最高的记录的主要内容,如果未能解决你的问题,请参考以下文章