首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI+SQLazy:从 SQL 小白到专家的神器

AI+SQLazy:从 SQL 小白到专家的神器

原创
作者头像
析言
发布2026-09-16 15:50:16
发布2026-09-16 15:50:16
290
举报
文章被收录于专栏:SQLazySQLazy

SQL 看着像英语,但其实根本不是一回事。一句话能说清的需求,落到 SQL 里就是几十行嵌套,语法还挑剔,小白看一眼就想放弃。 AI 来了,总算能“写”SQL 了。把需求讲给 AI,SQL 马上出来。可然后呢?读不懂。同一句话,每次问 AI,给你的 SQL 还不一样。改一次需求,它又生成一版全新的,之前看的、改的全都白费。写了很久,还是小白。

AI 没问题,问题在 "让 AI 直接吐最终 SQL" 这个用法。AI 给的是成品,中间怎么算的你看不见,只能选择信,或者重来。想改其中一步?改不了,只能让它再生成一版,越改越陌生。 用 SQLazy:AI 帮你理逻辑,把计算步骤写出来,你负责理解确认,剩下的交给 SQLazy 编译器:

代码语言:javascript
复制
t1=mytable: 排序 ID, CreatedAt 升序
t2=分段 条件 (NewStatus 等于 "ConfirmationStarted") 分区 ID 命名 seg
t3=筛选 (NewStatus 等于 "Closed" 且 seg 等于 1)
t4=汇总 CreatedAt 最大 命名 CreatedAt; 分组 ID

全是人话,一步一个意思,不精通 SQL 也看得懂逻辑。分步骤、易读易懂,这就是 SQLazy 和 AI 直接写 SQL 最大的区别。 每一步的中间结果随时能看,哪一步不对就改哪一步;修改只动对应的步骤,不会越改越乱。 然后?编译成 SQL 就完了:

代码语言:javascript
复制
WITH t2 AS (
		SELECT CreatedAt, ID, NewStatus
			, 1 + SUM(CASE
				WHEN (NewStatus = 'ConfirmationStarted') THEN 1
				ELSE 0
			END) OVER (PARTITION BY ID ORDER BY ID ASC, CreatedAt ASC ROWS UNBOUNDED PRECEDING) AS seg
		FROM mytable
	)
SELECT ID, MAX(CreatedAt) AS CreatedAt
FROM (
	SELECT CreatedAt, ID, NewStatus, seg
	FROM t2
	WHERE (NewStatus = 'Closed'
		AND seg = 1)
) t_3
GROUP BY ID
ORDER BY ID

什么 CTE 嵌套,窗口函数,都不操心了,无论多复杂,编译器全搞定。

同样的逻辑,输出永远一样。逻辑由人定,SQL 由编译器生成,没有概率,没有幻觉。 想换库?重新编译一次,MySQL、PG 随便挑。 从小白到专家,差的从来不是背语法,而是一套看得懂、改得动、传得下去的查询逻辑。SQLazy 给你这套逻辑,AI 帮你把话说明白,上手就能写,写着写着就成了专家。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档