a表例子数据:
字段:
【xm】 【fs】
张1山 70
张2山 60
张3山 50
张4山 40
张5山 30
b表例子数据:
字段:
【xm】 【xs】 【pm】
张5山 张 1
张3山 张 2
期望结果:
张5山
张3山
张1山
张2山
张4山
代码解决方案(python):修改sql偏移量
1、构建期望结果的sql
sql = "select xm,fs from a where xm like '%张%' group by fs desc"
2、查询b表要插队的数据
rank = mysql("select xm,pm from b where xs ='张';")
3、获取总数
total_records = mysql(f"select count(1) from ({sql}) as t;")[0][0]
4、计算页数和偏移量(页码和尺寸由自己定义的,代表想要查询哪页,每页多少条数据)
total_pages = (total_records + page_size -1) // page_size
offset = (page_number -1) * page_size
5、获取匹配的数据,并转成list
results = list(mysql(f"{sql} limit {page_size} offset {max(0, offset - len(rank))}"))
6、并入需要插队的数据
for i in rank:
results.insert(int(i[-1]) - 1,i)
7、返回分页数据
return results,total_pages