SQL 看着像英语,但其实根本不是一回事。一句话能说清的需求,落到 SQL 里就是几十行嵌套,语法还挑剔,小白看一眼就想放弃。 AI 来了,总算能“写”SQL 了。把需求讲给 AI,SQL 马上出来。可然后呢?读不懂。同一句话,每次问 AI,给你的 SQL 还不一样。改一次需求,它又生成一版全新的,之前看的、改的全都白费。写了很久,还是小白。
AI 没问题,问题在 "让 AI 直接吐最终 SQL" 这个用法。AI 给的是成品,中间怎么算的你看不见,只能选择信,或者重来。想改其中一步?改不了,只能让它再生成一版,越改越陌生。 用 SQLazy:AI 帮你理逻辑,把计算步骤写出来,你负责理解确认,剩下的交给 SQLazy 编译器:
t1=mytable: 排序 ID, CreatedAt 升序
t2=分段 条件 (NewStatus 等于 "ConfirmationStarted") 分区 ID 命名 seg
t3=筛选 (NewStatus 等于 "Closed" 且 seg 等于 1)
t4=汇总 CreatedAt 最大 命名 CreatedAt; 分组 ID全是人话,一步一个意思,不精通 SQL 也看得懂逻辑。分步骤、易读易懂,这就是 SQLazy 和 AI 直接写 SQL 最大的区别。 每一步的中间结果随时能看,哪一步不对就改哪一步;修改只动对应的步骤,不会越改越乱。 然后?编译成 SQL 就完了:
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 删除。