1

我有一个还款表,其中包含还款所属的每笔贷款的 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 是一些字符串。还款ID

我正在寻找一个查询,它为我提供每笔贷款的每笔还款的前 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 实现吗?如果是这样,如何?

4

2 回答 2

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
于 2013-07-02T01:12:13.290 回答
0

如果您在另一个表中有某种 ID,那么一个简单的内部联接应该可以解决问题..类似于:

select t1.column1, t1.column2 
from table1 t1 
inner join table2 t2 on t1.id = t2.t1id
limit 15

希望你明白,如果没有发布列和表名,我可以尝试给你你需要的查询,但这应该让你开始。

于 2013-07-02T01:10:46.407 回答