mysql常见问题

mysql常见问题

  • 使用group by时,查询结果的总记录数
SELECT COUNT(*) FROM (SELECT COUNT(*) FROM tb_lm_channel_everytj GROUP BY `date` ) a ;
  • 替换某个字段里相同之处的字符 简化版
UPDATE tb_charpter SET charpterName = REPLACE ( charpterName,'a' 'b' ) WHERE bid = 30105
  • 替换某个字段里相同之处的字符
UPDATE tb_charpter 
SET charpterName = REPLACE ( charpterName, 
substring( charpterName, locate('(', charpterName), locate(')', 
charpterName) - locate('(', charpterName) + 1 ),
 '' ) 
WHERE bid = 30105
  • 使用field 按自定义字段字符排序,建议少量数据时,跟in一起使用
select id from tb_book where id < 100 order by field(id,3,6,9,1,2,5,8,7) ASC LIMIT 20
// 倒序

在这里插入图片描述

select id from tb_book where id < 100 order by field(id,3,6,9,1,2,5,8,7) DESC LIMIT 20

在这里插入图片描述

  • FIELD 函数结合 ORDER BY 可以帮助我们将查询结果集按照参数列表顺序返回;
  • FIELD 函数结合 ORDER BY 可能带来 SQL 兼容性以及性能方面的问题;
    在确认项目数据库不大可能为 MySQL 之外的数据库的前提下,查询数据量少或者需要保持业务代码简洁的场景下,我建议可以采用 FIELD 函数排序;而在数据量庞大的情况下,或者不大可能出现大量 N+1 查询的情况下,我建议可以采用先在数据库中查询数据集(只查询 IN 条件,不排序)再到内存中通过业务代码排序(比如 Ruby 的 Array#sort_by)的方式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值