简短结论先给出:Cursor(游标)不能、也不应该用来“替代” JOIN。
它们解决的问题完全不同。
SELECT o.id, u.name
FROM orders o
JOIN users u ON o.user_id = u.id;
for 循环DECLARE cur CURSOR FOR
SELECT id FROM orders;
OPEN cur;
FETCH NEXT FROM cur INTO @id;
WHILE @@FETCH_STATUS = 0
BEGIN
-- 逐行处理
FETCH NEXT FROM cur INTO @id;
END
CLOSE cur;
Cursor 不是没用,而是用得极少:
✅ 适合场景:
❌ 不适合:
“能 JOIN 就别 Cursor,能集合就别循环。”
如果有人说:
“我用 Cursor 替代了 JOIN”
那通常不是“替代”,而是:
如果你愿意,可以告诉我:
我可以直接帮你把 Cursor 逻辑改写成 JOIN 写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。