如何实现查询取一定比例的数据

我有数据表a,数据如:
st,ct
s1,1
s2,2
数据表b,数据如:
st,cd,cn
s1,1,1
s1,2,2
s2,1,1
s2,2,2
s2,3,3
需要根据a表ct列值,取b表按st和cd分组排序后前n条。a和b通过st列关联
结果需要是:
s1,1,1
s2,1,1
s2,2,2
通过一条语句能实现吗?

SELECT count(1) FROM b JOIN a AS a ON b.st=a.st WHERE b.cd<=a.ct;
这是用SQL写的,不知道是不是你想要的