SQL语句解析:DESC LIMIT 1

跟着豆包学习SQL语句。

我来逐行、逐模块、通俗完整解析这条 SQL 语句,结合语法含义 + 业务逻辑,帮你彻底看懂:

一、整体功能(一句话总结)

从原材料出库主表中,查询 包含指定编码规则的领料单号 的 最新 1 条记录,只返回:出库单号、操作日期 两个字段。

数据库环境:PostgreSQL(PG 库)(双引号引用字段 / 表名、|| 字符串拼接是 PG 标准语法)

二、逐部分拆解解析

完整 SQL:

sql 复制代码
SELECT "c_StockOutOrder","d_OperaterDate"

FROM "MM_RawMaterialOutM"

WHERE "c_StockOutOrder"  LIKE

    (SELECT '%'||"c_SValue"||'%' FROM "AA_Basic_EncodingRulesDetails"  WHERE "c_CodeName"='领料单号' AND "i_Sequence"='1')

ORDER BY "c_StockOutOrder" DESC,"d_OperaterDate" DESC

LIMIT 1

1、查询字段:SELECT子句

SELECT "c_StockOutOrder","d_OperaterDate"

  • 作用:指定要查询返回的两个字段

  • 字段含义:

    • c_StockOutOrder:出库单号 / 领料单号(核心业务单号)

    • d_OperaterDate:操作日期(出库操作的时间)

  • 双引号 " ":PG 中用来标记标识符(字段名 / 表名),避免和数据库关键字冲突。

2. 数据源:FROM 子句

sql 复制代码
FROM "MM_RawMaterialOutM"
  • 表名:MM_RawMaterialOutM → 原材料出库主表

  • 作用:指定数据从「原材料出库单」这个主表中查询。

3. 过滤条件:WHERE + 子查询(核心逻辑)

sql 复制代码
WHERE "c_StockOutOrder" LIKE

    (SELECT '%'||"c_SValue"||'%' FROM "AA_Basic_EncodingRulesDetails"  WHERE "c_CodeName"='领料单号' AND "i_Sequence"='1')

① 外层条件:LIKE 模糊匹配

"c_StockOutOrder" LIKE 模糊值含义:出库单号 包含 后面子查询返回的字符串(模糊查询)

② 内层子查询:动态生成模糊匹配规则

sql 复制代码
SELECT '%'||"c_SValue"||'%'

FROM "AA_Basic_EncodingRulesDetails" 

WHERE "c_CodeName"='领料单号' AND "i_Sequence"='1'
  1. 表名:AA_Basic_EncodingRulesDetails → 系统编码规则明细表(存储单据编号的生成规则)

  2. 过滤条件:

    • c_CodeName='领料单号':找「领料单号」的编码规则

    • i_Sequence='1':找规则序号为 1 的配置

  3. 字符串拼接:%||c_SValue||%

    • ||:PG 的字符串拼接符

    • 效果:把查询到的 c_SValue 包装成 %xxx% 格式(标准 SQL 模糊匹配通配符)

    • 例子:如果子查询查到 c_SValue='LL',则拼接成 %LL%

③整体 WHERE 逻辑

出库单号 包含 编码规则表中「领料单号」规则配置的字符

4. 排序:ORDER BY 子句

sql 复制代码
ORDER BY "c_StockOutOrder" DESC,"d_OperaterDate" DESC
  • 排序规则:降序 DESC(最新的排在最前面)

  • 第一排序:按 出库单号 降序

  • 第二排序:按 操作日期 降序

  • 目的:把最新创建、最新操作的出库单放在结果集第一条

5. 限制返回条数:LIMIT 1

LIMIT 1

  • 作用:只返回排序后的第一条记录

  • 最终效果:拿到符合规则的最新 1 条原材料出库单

三、关键语法 & 业务补充

1. 必须满足的前提

子查询 必须返回 1 行 1 列(单个值),否则 SQL 会报错。 因为 LIKE 只能匹配一个模糊规则。

2. 业务场景解读

这条 SQL 一般用于:获取系统中,符合领料单号编码规则的最后一笔原材料出库记录。

3. 举个例子帮你理解

假设子查询返回:%LL%

那么整条 SQL 等价于:

sql 复制代码
SELECT 出库单号,操作日期

FROM 原材料出库主表

WHERE 出库单号 LIKE '%LL%'

ORDER BY 出库单号 DESC,操作日期 DESC

LIMIT 1

四、总结

数据源:原材料出库主表过滤规则:出库单号包含「领料单号编码规则」配置的字符排序:最新的出库单排第一结果:仅返回最新 1 条符合条件的 出库单号 + 操作日期

相关推荐
网络工程小王7 分钟前
【LCEL 链式调用详解】调用篇-2
java·服务器·前端·数据库·人工智能
道法自然,人法天1 小时前
PostgreSQL安装与初始化教程(二进制压缩包)
数据库·postgresql
yzs871 小时前
从Hydra到storage_engine:PostgreSQL列存引擎的性能跃迁与技术进化
数据库·postgresql
红云梦1 小时前
官方 Anthropic Postgres MCP Server 存在 SQL 注入漏洞 -- SafeDB 是如何做到 4 层防御的
数据库·sql
TDengine (老段)1 小时前
红有软件重构智能油田时序数据底座,支撑生产实时感知与设备预测性维护
大数据·数据库·人工智能·重构·时序数据库·tdengine
倒霉蛋小马2 小时前
【Redis】什么是缓存击穿?
数据库·redis·缓存
Jing_jing_X2 小时前
MCP (一)是什么?一文讲清 AI 如何连接现实世界
数据库·人工智能·oracle
阿凡观察站2 小时前
2026年工程项目管理软件推荐:这5款主流产品值得关注
大数据·数据库·低代码·finebi·简道云
逸Y 仙X3 小时前
文章二十一:ElasticSearch 词项查询与调度查询实战
java·大数据·数据库·elasticsearch·搜索引擎
李李李勃谦3 小时前
鸿蒙PCBI 报表工具:连接数据库与可视化报表生成
数据库·华为·交互·harmonyos