0

给定一张桌子

{ID, Code, OffSet, Amount},
{1, 1, 1, .30}
{2, 1, 2, .45}
{3, 1, 3, .50}
{4, 2, 1, .26}

如果我知道确切的偏移量,我可以很容易地查询。但是如果偏移量不包含在表中怎么办?如何通过连接获取查询以返回给定代码的最后一条有效记录?

例如,如果我的查询包含 code = 1 和 offset = 4,它应该从 ID 为 3 的 Record 返回 Amount of .50

SELECT T1.Account, T2.Amount
  FROM Table1 T1
  LEFT JOIN Table2 T2 on T2.Code = T1.Code and T2.Offset = 4  --?? What goes here??
 WHERE T1.Account = 'ABCD'

我正在使用 MSSQL 2008 R2。

谢谢。

4

2 回答 2

0

在这里,您的 ID 是唯一的,并假设插入新记录时它比现有 ID 多。

因此,您可以使用前 1 条记录轻松获取该记录并按 id desc 排序我正在使用您的查询来解决该问题

SELECT T1.Account, T2.Amount
  FROM Table1 T1
  LEFT JOIN Table2 T2 on T2.Code = T1.Code and T2.Offset = 4  
 WHERE T1.Account = 'ABCD' order by T1.Id desc Limit 1

注意:top 在 sql server 中使用,limit 在 mysql 中使用

于 2012-12-15T13:14:07.407 回答
0

如何获取查询以返回给定代码的最后一条有效记录?

SELECT TOP 1 * FROM MyTbl WHERE Code = 1 AND OffSet <= 4 ORDER BY OffSet DESC

假设该ID字段是自动递增的。

于 2012-12-15T00:36:10.183 回答