版本: 2.0.9
现象描述
sql如下, 这种写法是希望用户传过来的sql在没有带limit时给定一个默认值, 但实际测试下来发现不仅会影响原sql的排序规则, 连每次执行的结果都是随机的,
select *
from (select *
from bz_digit_rolling_billet1
order by identity desc
) as t
limit 20;
执行多次结果如下:
当里面sql指定limit时, 结果正常如下:
临时解决方案(有其他的问题)
通过fe.audit.log查看datagrip提交的sql找到了一个替代实现: 通过使用mysql的sql_select_limit
session variable去做(在mysql client中验证有效):
SET SESSION sql_select_limit = 10;
select *
from bz_digit_rolling_billet1
order by identity desc;
但这种方式的问题在于如果原sql自己加了更大的limit, 那么session variable中指定的就失效了
问题
有没有其他手段可以在不影响原sql结果的情况下进行行数的limit限制