MySQL系列(29): 根据id查出其所在分页的列表数据
根据给出的主键 id ,计算出该行所在的分页。SQL 语句的分页关键词 Limit
需要用的数据有 offset
,size
。而在应用端展示,会有页码(pageNo)和 每页条数(pageSize),总数(total) 三个数据。
根据给出的主键 id ,计算出该行所在的分页。SQL 语句的分页关键词 Limit
需要用的数据有 offset
,size
。而在应用端展示,会有页码(pageNo)和 每页条数(pageSize),总数(total) 三个数据。
MySQL数据库,一个更 UPDATE 更新用到了 group_concat 函数,报:Row XXX was cut by GROUP_CONCAT() 的错误,但单独的查询没有报错。
错误含义是:GROUP_CONCAT 有最大的长度限制,超过最大长度就会被截断掉。由 group_concat_max_len 系统变量限制最大长度,其默认值为 1024。
MySQL 根据子句进行条件更新或删除时,报如下错误:You can’t specify target table for update in FROM clause
错误意思是指:在同一语句中,update 和 select 子句不能是同一个表。
解决方式:需要把 SELECT 条件子句的结果集转为中间临时表,此临时表会依赖于 SELECT 条件子句驱动表。
开发中经常会碰到传父类id,查出其下所有子类需求。
实现思路:拿当前查到的 id 递归查询 parent_id = id,合并所有的 id 到一个字段 ids,然后查 id 在 ids 中的数据 。
实现方案:一种是在代码中递归查询实现;另一种是在 SQL语句递归查询实现。
本篇主要描述在 MySQL 中的递归查询SQL语句实现。
1 | SELECT |
SQL 语句中常需要通过逻辑判断来控制流程的操作,MySQL 标准提供了 CASE
,IF
,IFNULL
,NULLIF
控制流函数。
MySQL 5.7.5 版本,默认开启了only_full_group_by
模式,select
字段只能是group by的字段,否则会报错,可以关闭该模式,或使用 any_value(column)
来抑制该异常。
防止在生产中使用 update
语句漏带条件导致全表更新事故,开启安全更新模式,强制带条件更新,否则报错。
经常需要查询一段日期范围内的数据,可能需要对日期时间进行格式转换以达到真正想要的数据,这里整理了几种方式。
整理下以前记录的一些常用但一时想不起的 SQL 语句,有些极其简单,有些则需要思考下。