mysql - 如何遍历一个表并在 MySQL 中抓取一行?
问题描述
我想要完成的是循环遍历表的所有行并一次抓取一行并对其进行处理。像这样的东西
BEGIN
DECLARE x INT;
DECLARE countmax INT;
DECLARE id INT;
DECLARE name VARCHAR(255);
SET x = 1;
SET id = 0;
SET countmax = (select count(*) from Appian.APPIAN_DATA);
SET FOREIGN_KEY_CHECKS = 0;
WHILE x < countmax DO
SET name = (SELECT FULL_NAME
FROM Appian.APPIAN_DATA
WHERE ID = x
);
#do something with above result here later.
SET x = x + 1;
END WHILE;
select name;
END
从上面看,name 返回 null。我检查了 x 是否正确递增,似乎没问题。我想抓住 ID = x 的行。第一次在 SQL 中使用循环,所以不确定什么是允许的,什么是不允许的。但是,我还没有看到人们在循环中使用选择,主要是操作数据和更新行。最终目标是创建临时表并在操作后将每一行插入其中。对于专家来说,我在这里做了什么愚蠢的事情,我不能从表中提取数据并将其分配给变量?编辑:更新代码更清晰
解决方案
发布的代码只会查看 ID = 379 ,我假设您打算使用“WHERE ID = x”。
此外,您通常无需使用循环即可完成您想要的工作,但如果您坚持迭代编程,请考虑改为学习游标。它将使用更简单的语法为您处理 while 循环中的一些小细节。
推荐阅读
- asp.net-core - 如何在 Blazor 服务器端呈现 Javascript?
- python - 如何在特定文本 selenium 中调用操作
- java - @WebFilter 在使用 MockMvc 测试控制器时不起作用
- sql - 如何强制数据库在 Oracle 中使用基于函数的索引
- python-3.x - 熊猫数据框在列中具有重复值
- python - 在可变长度元组列表中查找最常见的元素
- xcode - 在 UIViewControllerRepresentable 中传递数据
- swift - SwiftUI,使用 ForEach 的参数导致错误“无法推断闭包类型”
- jquery - 如何将图像文件和表单数据从 Ajax 传递到 MVC 控制器
- sql - BigQuery SQL:滚动计数在两个条件之间有界