记录关于mysql的问题和解决方法

2 篇文章 0 订阅

1.怎么在select in(…) 各种id或者字母 查询时候按照查询的顺序排列。
比如查询的id的顺序是 in(7463,7459,7953,7978,500,7878,7739,8198,7935,7935,37,33,7896,8322,8326,6893)
查询的结果自动的会排好顺序,(33,37…),不能按照查询的顺序排列。
这个时候就需要 order by FIELD 里面 FIELD的函数方法。直接上代码

	<select id="getActivityGoods" resultType="com.joypay.domain.ActivityGoods">
        <![CDATA[
            select sg.name goodsName,sgp.id goodsId,sg.pic pic,
                   ROUND(sgp.disprice / 100, 2) disprice,ROUND(sgp.marketprice / 100, 2) marketprice
            from sc_goods sg
            inner join sc_goods_price sgp on sg.id = sgp.goodsid
        ]]>
        <where>
            <if test="signs !=null and signs != ''">
                and sgp.id in
                <foreach item="item" index="index" collection="signs" open="(" separator="," close=")">
                    #{item,jdbcType=BIGINT}
                </foreach>
            </if>
        </where>
        <if test="signs !=null and signs != ''">
            order by FIELD
            <foreach item="item" index="index" collection="signs" open="(sgp.id," separator="," close=")">
                #{item,jdbcType=BIGINT}
            </foreach>
        </if>
    </select>

这里用的是mybatis。

sql语句就变成了:

select sg.name goodsName,sgp.id goodsId,sg.pic pic,
       ROUND(sgp.disprice / 100, 2) disprice,ROUND(sgp.marketprice / 100, 2) marketprice
from sc_goods sg
inner join sc_goods_price sgp on sg.id = sgp.goodsid
where sgp.id in (7463,7459,7953,7978,500,7878,7739,8198,7935,7935,37,33,7896,8322,8326,6893)
order by FIELD(sgp.id,7463,7459,7953,7978,500,7878,7739,8198,7935,7935,37,33,7896,8322,8326,6893)

记得在FIELD方法里面第一个为需要排序的字段名,不要忘记了,要不没效果。

2.记得limit的用法
limit 1,100
是从第二个元素开始,找到100个数。
limit 100
是从第一个元素开始,查找100个数,

3.mysql里面用于字符串拼接最好使用concat(hundred,ten,one) 函数。
在使用MD5(‘123’+‘123’) 和 md5(‘123123’) 得到的字符串不一致。

4.BTREE和HASH索引方法的区别。
b-tree和hash 一般都选择b-tree hash有很多弊端,避免不了全表搜索。
https://www.cnblogs.com/vicenteforever/articles/1789613.html

5.MYSQL索引有四种PRIMARY、INDEX、UNIQUE、FULLTEXT
https://www.cnblogs.com/parryyang/p/5900926.html

6.MYSQL 字符集和排序规则
数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation)。
字符集,即用于定义字符在数据库中的编码的集合。 常见的字符集:utf-8 gbk 等。
数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规则。 常见的如下:
(1) utf8_general_cs 和 utf8_general_ci (后缀"_cs"或者"_ci"意思是区分大小写和不区分大小写(Case Sensitive & Case Insensitve))
(2) utf8_bin 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制的内容
说明:所为排序规则,就是指字符比较时是否区分大小写,以及是按照字符编码进行比较还是直接用二进制数据比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值