Din*_*del 7 sql t-sql sql-server where-clause
我有loanTable两个字段loan_id和status
loan_id status
==============
1 0
2 9
1 6
5 3
4 5
1 4 <-- How do I select this??
4 6
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我需要显示在过去Status的loan_id1点即是status4.可以帮助我在此查询.
Jon*_*ler 15
由于ID 1的"最后一行"既不是最小值也不是最大值,因此您处于轻度混乱的状态.表中的行没有订单.因此,您应该提供另一列,可能是插入每行的日期/时间,以提供数据的排序.另一个选项可以是一个单独的,自动递增的列,它记录插入行的顺序.然后可以编写查询.
如果调用了额外的列status_id,那么你可以写:
SELECT L1.*
FROM LoanTable AS L1
WHERE L1.Status_ID = (SELECT MAX(Status_ID)
FROM LoanTable AS L2
WHERE L2.Loan_ID = 1);
Run Code Online (Sandbox Code Playgroud)
(可以省略表别名L1和L2,而不会混淆DBMS或经验丰富的SQL程序员.)
目前看来,没有可靠的方法可以知道哪一行是最后一行,因此您的查询无法回答.
您的表是否恰好具有主ID或时间戳?如果没有,那么你想要的是不可能的.
如果是,那么:
SELECT TOP 1 status
FROM loanTable
WHERE loan_id = 1
ORDER BY primaryId DESC
-- or
-- ORDER BY yourTimestamp DESC
Run Code Online (Sandbox Code Playgroud)