阅读 81

MYSQL

1. Case用法

example

举个形象的例子

when sex 
   case 1 then '男'
   case 0 then '女'
   else
   '不男不女'
end
复制代码

将sql翻译下就是:

当sex字段值
   为1时,返回男
   为0是,返回女
   如果都不是,返回不男不女 ~~~~
结束
复制代码

2. Group by

Group by:仅适用于根据一个或多个列对结果集进行分组

Group by:主要用于对数据进行分组

除聚合函数中的字段,剩下select所有的字段都必须在group by中出现。

3. Having与Where的区别

where: 在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

having:是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。


select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18

复制代码

4. and/or

出题:模糊匹配标题或编码

错误示范:

SELECT DISTINCT o.id, img, status, protect_rights_num
FROM store_protect_rights_work_order o
LEFT JOIN platform_store s ON s.id = o.store_id
WHERE o.deleted = 0
<if test="fuzzyName != null and fuzzyName != ''">
    AND title LIKE concat('%', #{fuzzyName}, '%' OR protect_rights_num LIKE concat('%', #{fuzzyName}, '%'))
</if>

复制代码

正确示范:

# 应在外层加(),这样才是一个整体
(AND title LIKE concat('%', #{fuzzyName}, '%' OR protect_rights_num) LIKE concat('%', #{fuzzyName}, '%'))
</if>


复制代码