我有一张还款表,每笔贷款都有16行偿还。
Repayments
loanid repid amnt
--------------------
a1 r1 1,100
a1 r2 1,100
| | |
a1 r16 1,105
b2 s1 2,500
b2 s2 2,500
| | |
b2 s16 2,510
| | |
Loans
loanid othercolumns...
-----------------------
a1
b2
|
blahid
|
LoanIds是一些字符串。 还款还是
我正在寻找一个查询,它为每笔贷款提供每笔还款的前15行。
loanid repid amnt
a1 r1 1,100
a1 r2 1,100
| | |
a1 r15 1,105
b2 s1 2,500
b2 s2 2,500
| | |
b2 s15 2,510
| | |
这可能与SQL有关吗?如果是的话,怎么样?
答案 0 :(得分:2)
假设rep不是顺序的,在这种情况下你可以使用WHERE rep <= 15
,那么你需要为每个组引入一个行号。 MySql没有像其他数据库那样的内置行号函数,但您可以使用user defined variables
来实现相同的结果
select *
from (
select loan, rep, amnt, @row:=if(@prevLoan=loan, @row+1, 1) rn, @prevLoan:=loan
from repayments
join (select @row:=0, @prevLoan:=0) t
order by loan, rep
) t
where rn <= 15
答案 1 :(得分:0)
如果你在另一个表中有某种ID,那么一个简单的内连接应该可以做到这一点......如下:
select t1.column1, t1.column2
from table1 t1
inner join table2 t2 on t1.id = t2.t1id
limit 15
希望你得到它,如果不发布列和表名,我可以尝试给你所需的查询,但这应该开始。