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 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制的内容
说明:所为排序规则,就是指字符比较时是否区分大小写,以及是按照字符编码进行比较还是直接用二进制数据比较。