给出一个表
{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的记录返回.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。
感谢。
答案 0 :(得分:0)
如何获取查询以返回给定代码的最后一个有效记录?
SELECT TOP 1 * FROM MyTbl WHERE Code = 1 AND OffSet <= 4 ORDER BY OffSet DESC
假设ID
字段是自动递增的。
答案 1 :(得分: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