Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 中间件

  • 云原生

  • 分布式

  • 存储技术

  • 数据库

    • NoSQL数据库

    • 关系型数据库

      • 常见场景
        • 审核中
        • 审核通过
        • 暂不支持
        • 关闭、开启服务
        • 修改服务的渠道配置
        • 查看版本记录
        • 修改服务信息
          • 5. 判断字段是否为空 用 is NULL 而不是 =NULL
      • 性能优化
      • 注意事项
    • 存储引擎

    • 数据库理论

  • 服务部署

  • 编程语言

  • 计算技术

  • 服务端
  • 数据库
  • 关系型数据库
gahing
2018-04-18
目录

常见场景草稿

user (id,name,role_id)

role (id,name)

  1. 查找role列表每个role_id在user的个数

SELECT *,(SELECT count(*) from user where user.role_id = role.id) as num from role

  1. 提供user.id列表(1,2,3)和role_id 6 ,判断user.id列表的role_id是否都是6

SELECT count(*) as sum FROM user where id in (1,2,3) and role_id=6

sum!=list.length,说明存在其他role_id的user,或者user记录本身不存在,输出false。

否则输出true

  1. 根据查询结果批量插入

无需用VALUES

INSERT INTO form_channel(form_no,channel_no) (select form_no,channel_no from form_list)

  1. 表单、渠道、应用记录、应用服务信息

## 创建表单

  1. form_list:记录表单详情信息form_no,state,company_id
  2. form_channel: 记录表单绑定了哪些渠道form_no,channel_no
  3. form_game_list: 记录表单中所有应用的详情信息game_no,form_no,state

# 审核中

  1. form_game_list:state=>'审核中'
  2. game_list:valid:-1,1,0 分别表示未开通/正服务/已挂起;game_no主键;
  3. 不存在package_name,company_id记录,则此时插入valid=-1,channel_no为null,game_ref_ing_no字段指向form_game_list表中的审核中记录的 game_no
  4. 存在package_name,company_id记录,更新game_ref_ing_no字段,此时该应用所属渠道还是之前审核通过的
  5. form_channel:修改表单的渠道配置操作

# 审核通过

  1. form_game_list:state=>'审核通过'
  2. game_list: 删除package_name,company_id的记录,插入对应渠道列表的记录,并设置game_ref_ed_no

# 暂不支持

  1. form_game_list:state=>'暂不支持'
  2. game_list: 不做操作

判断状态是审核还是升级就看是否存在game_ref_ed_no,增加state字段设置,方便查询

# 关闭、开启服务

  1. game_list: 设置多个渠道的记录其valid=0/1=》正服务、已挂起

# 修改服务的渠道配置

  1. game_list: 只有该服务拥有game_ref_ed_no值,才可以修改。删除之前记录,新增对应渠道记录

# 查看版本记录

package_name,company_id 去form_game_list中取

# 修改服务信息

ref_ed指向的一定是审核通过的 初次提交->审核中 一条无channelNo,无ref_ed,有ref_ing的记录 暂不支持->审核失败 之前记录无ref_ed,已存在ref_ing,处于未开通状态 审核通过->审核通过 之前记录无ref_ed,将原记录删除 并按渠道新增多条

再次提交->升级中 多条原记录,有ref_ed,设置ref_ing 暂不支持->审核失败 之前记录有ref_ed,将原记录删除 并按渠道新增多条 审核通过->审核通过 之前记录有ref_ed,将原记录删除 并按渠道新增多条

# 5. 判断字段是否为空 用 is NULL 而不是 =NULL

  1. 按role_id分组,多列合为一个字段,以&分割,每个元素包括id#name

SELECT GROUP_CONCAT(CONCAT_WS('#',id,name) SEPARATOR '&') from user GROUP BY role_id

  1. 联表删除,删除role表和user表中id=1的记录

DELETE ROLE,USER from ROLE,USER where user.role_id=role.id and role.id=1

这是全连接的方式,如果role表存在数据,user表不存在数据,删除就会失败。

采用左连接的方式, DELETE ROLE,USER from ROLE LEFT JOIN USER ON user.role_id=role.id where and role.id=1

  1. NOT IN 和 is NULL 一起用

字段a的某条记录为NULL,而 a NOT IN (1,2,3) 不能得到该记录,应该是 a NOT IN (1,2,3) OR a is NULL

编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
mongo用户管理
性能优化

← mongo用户管理 性能优化→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式