mybatis mysql group by后只输出最后一条记录 group by参数

现象:

写了几百遍的group by,居然查询出来只有一条数据,

但是把执行语句放入mysql中执行又没问题

找了返回值的问题也没事

 

group by 参数,这样的组合遇到的坑

错误的语句如下

  SELECT *  FROM tb_equip_archives  group by #{colum}

 

正确的语句如下

  SELECT *  FROM tb_equip_archives  group by ${colum}

 

看到这里就明白了吧

 

#{}防止sql注入攻击,自动在参数外面加了一个单引号

实际执行语句为

  SELECT *  FROM tb_equip_archives  group by ‘id’

 

道理我都懂,怎么这里就忘了呢

 

 

MyBatis中,当使用group by语句时,可能会导致结果的乱序。这是因为在执行group by时,数据被分组后可能会改变原始数据的顺序。这意味着结果集的顺序可能与查询语句中的顺序不一致。 解决这个问题的方法是通过加入额外的排序规则来保证结果的顺序。一种常见的方法是在查询语句中添加order by子句,使用需要的列来进行排序。这样可以确保结果集按照指定的顺序进行返回。 另外,也可以使用子查询来解决乱序的问题。通过在外层查询中再次对结果集进行排序,可以确保结果的顺序是正确的。 总结起来,解决MyBatisgroup by乱序的方法有两种:一种是在查询语句中添加order by子句,指定需要的列进行排序;另一种是通过子查询对结果集进行排序。这样可以确保结果的顺序是正确的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【MySQL】官网学习 order by limit 中的乱序问题](https://blog.csdn.net/chenghan_yang/article/details/127475261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [oracle中mybatis查询使用group by 和oder导致rownum混乱,查不到排序前10的数](https://blog.csdn.net/qq_35194278/article/details/129200463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值