CodeBuddy/Trae + SQLazy,再也不愁 SQL 弯弯绕

Picture2png
写时一时爽,维护火葬场——这句玩笑话正在变成日常:AI 写出来的 SQL,就算对了也很难审,十几个 CTE 层层嵌套,看都看不完;下次需求稍微改一点,AI 很可能把整段 SQL 重写一遍,又得从头审一遍,费时还不稳定。
换个思路:别让 AI 直接写 SQL,让它写 SQLazy 脚本。把 SQLazy 的 skills 装进 CodeBuddy、Trae 这类编程助手,一句自然语言,AI 就帮你把逻辑拆成清晰的步骤。
来个例子走一遍:要计算某支股票最长连续上涨了多少天。
第一步:在 CodeBuddy/Trae 里用自然语言描述需求:

/sqlazy规划 库表stock的结构是CODE(INT),DT(DATETIME),CL(FLOAT),需要计算股票代码为100046的股票,最长连续上涨了多少天?

第二步:用 SQLazy 打开 CodeBuddy/Trae 生成的代码文件:

Picture3png

t1=stock: 筛选 (CODE=100046)
t2=排序 DT
t3=分段 条件 (CL<=CL [-1]); 命名 上涨组
t4=汇总 #计数 命名 天数;分组 上涨组
t5=汇总 天数 最大 命名 最长连续上涨天数

现在可以单步执行,每步中间结果实时可见,有错误立即发现纠正,这比调试 SQL 方便太多了。
可运行、可调试,句句都是大白话,两个月后照样看得懂
第三步:选择目标数据库,编译 SQL。

Picture4png

WITH t2 AS (
		SELECT CODE, DT, CL
		FROM stock
		WHERE (CODE = 100046)
	)
SELECT MAX(天数) AS 最长连续上涨天数
FROM (
	SELECT 上涨组, COUNT(*) AS 天数
	FROM (
		SELECT CODE, DT, CL
			, 1 + SUM(CASE
				WHEN (CL <= col__2) THEN 1
				ELSE 0
			END) OVER (ORDER BY CASE
				WHEN DT IS NULL THEN 1
				ELSE 0
			END, DT ASC ROWS UNBOUNDED PRECEDING) AS 上涨组
		FROM (
			SELECT t2.*, LAG(CL) OVER (ORDER BY CASE
					WHEN DT IS NULL THEN 1
					ELSE 0
				END, DT ASC) AS col__2
			FROM t2
		) sub__3
	) t_4
	GROUP BY 上涨组
) t_5

以后要改,只需改 SQLazy 里那一步,不用推翻重来,改完一键编译,输出稳定可预期。
最后,还可以在目标数据库中运行 SQL 验证结果。

Picture5png
为什么绕这一圈反而更省心?因为 SQL 的逻辑全埋在嵌套里,对不对只能靠猜;SQLazy 则把逻辑一步一摊,每一步都看得懂、查得到,改哪里心里都有数。
关键的是,步骤一旦定下来,编译出的 SQL 就是确定的:同样逻辑,输出永远一样,不靠运气。说到底就一句话:
AI 负责写逻辑,SQLazy 负责编 SQL,逻辑可控、稳定可审
交接、审计、换库都不慌:逻辑都在步骤里,看得懂、说得清,新人上手也快,SQL 只是最后顺手生成的那一张纸。
SQL 弯弯绕,不该是常态。CodeBuddy/Trae+SQLazy,让 AI 写逻辑,让引擎管 SQL。