SQL 窗口函数怎么实现游标分页?

窗口函数适合给结果集编号,却不能承担游标分页的“从上一条继续取”的职责。本文拆开常见误区、正确 SQL 写法、窗口函数在分页中的辅助用法,以及 PostgreSQL、MySQL、SQLite、SQL Server 的实现差异。 很多 SQL 教程会把“窗口函数编号”和“游标分页”混在一起,结果写出来的语句不是直接报错,就是翻页时重复、漏数。

SQL 窗口函数怎么实现游标分页?

SQL 批量 INSERT 数据时,如何避免主键冲突

批量插入遇到主键或唯一键重复时,核心不是“怎么不报错”,而是按数据库方言选择真正的跳过写法。MySQL、PostgreSQL 和 SQL Server 的语义、锁行为与开销差异很大,用错语句往往会把简单去重变成阻塞和死锁问题。

SQL 批量 INSERT 数据时,如何避免主键冲突

怎样用 SQL JSON 函数查询数组中的指定元素

查询 SQL JSON 数组时,最常见的问题不是函数失效,而是字段类型、路径表达式和元素类型没对上。本文用 MySQL 与 PostgreSQL 两套写法,梳理 JSON_CONTAINS、JSON_EXTRACT、JSON_TABLE 与 jsonb 操作符的适用场景、坑点和性能差异。 很多人第一次查 SQL 里的 JSON 数组,都会遇到同一个现象:语句看起来没错,结果却始终查不到。

怎样用 SQL JSON 函数查询数组中的指定元素

如何使用 SQL WEEK 函数统计每周新增用户

统计“每周新增用户”时,真正容易出错的不是 SQL 语法,而是周定义、首活口径和跨年分组。本文按 MySQL、PostgreSQL、SQL Server 分别说明 ISO 周写法,并给出新增用户统计、跨年周处理与索引优化的实操要点。 很多人写“每周新增用户”统计时,都会直接对时间字段套上 WEEK() ,但这一步很可能已经把结果做偏了。

如何使用 SQL WEEK 函数统计每周新增用户

SQL 触发器中如何正确使用事务锁

在 MySQL 和 SQL Server 里,DML 触发器并不会开启独立事务,而是直接运行在父事务上下文中。要减少死锁和锁等待,关键不在触发器里“补事务”,而在主事务开头预加锁、让触发器内 DML 只走唯一索引,并把非核心跨表操作尽量移出事务边界。

SQL 触发器中如何正确使用事务锁

Debian 下 Python 如何连接数据库:5 种常见方案与选型说明

这篇文章按数据库类型梳理 Debian 下 Python 的常见连接方式,覆盖 MySQL、PostgreSQL、SQLite、MongoDB 和 Redis。除了保留原始安装命令与示例代码,还补充了选型思路和连接时最容易出错的配置检查点。 在 Debian 上用 Python 接数据库,难点通常不在“能不能连上”,而在于不同数据库的驱动、连接对象和使用场景差别很大。

Debian 下 Python 如何连接数据库:5 种常见方案与选型说明

怎样用 SQL 窗口函数计算相邻订单时间差

在 SQL 里计算相邻订单时间差,关键不只是 `LAG()`,还包括按正确时间字段排序、按用户分组,以及针对不同数据库选择合适的时间差函数。本文用 MySQL、PostgreSQL、SQL Server 的写法对照说明,并补上空值处理和索引检查的实际要点。

怎样用 SQL 窗口函数计算相邻订单时间差

SQL 子查询中如何实现分页查询

MySQL 里“子查询 + LIMIT”并不是随处都能用,尤其在 5.7 及更早版本里,放进 `IN/ALL/ANY` 这类子查询会直接报错。本文结合 MySQL 5.7、8.0+ 的差异,梳理可用写法、分页陷阱、性能代价,以及什么时候该改用范围分页或预过滤方案。

SQL 子查询中如何实现分页查询