如何遍历MySQL中表的所有行?
要遍历表的所有行,请使用MySQL中的存储过程。语法如下-
delimiter //CREATE PROCEDURE yourProcedureName()BEGIN
DECLARE anyVariableName1 INT DEFAULT 0;
DECLARE anyVariableName2 INT DEFAULT 0;
SELECT COUNT(*) FROM yourTableName1 INTO anyVariableName1;
SET anyVariableName2 =0;
WHILE anyVariableName2 < anyVariableName1 DO
INSERT INTO yourTableName2(yourColumnName,...N) SELECT (yourColumnName1,...N)
FROM yourTableName1 LIMIT anyVariableName2,1;
SET anyVariableName2 = anyVariableName2+1;
END WHILE;
End;
//
为了理解上述语法,让我们创建两个表,即一个表具有记录,第二个表将使用存储过程从循环中获取记录。
以下是创建第一个表的查询-
mysql> create table AllRows-> (
-> Id int,
-> Name varchar(100)
-> );
使用insert命令在第一个表中插入一些记录。查询如下-
mysql> insert into AllRows values(1,'John');mysql> insert into AllRows values(100,'Carol');
mysql> insert into AllRows values(300,'Sam');
mysql> insert into AllRows values(400,'Mike');
使用select语句显示表中的所有记录。查询如下-
mysql> select *from AllRows;
输出结果
+------+-------+| Id | Name |
+------+-------+
| 1 | John |
| 100 | Carol |
| 300 | Sam |
| 400 | Mike |
+------+-------+
4 rows in set (0.00 sec)
这是创建第二个表的查询。创建表的查询如下-
mysql> create table SecondTableRows-> (
-> StudentId int,
-> StudentName varchar(100)
-> );
现在,您可以使用存储过程遍历表的所有行。存储过程如下-
mysql> delimiter //mysql> CREATE PROCEDURE Sp_AllRowsOfATable()
-> BEGIN
-> DECLARE lastRows INT DEFAULT 0;
-> DECLARE startRows INT DEFAULT 0;
-> SELECT COUNT(*) FROM AllRows INTO lastRows;
-> SET startRows=0;
-> WHILE startRows <lastRows DO
-> INSERT INTO SecondTableRows(StudentId) SELECT (Id) FROM AllRows LIMIT
startRows ,1;
-> SET startRows= startRows+1;
-> END WHILE;
-> End;
-> //
mysql> delimiter ;
使用CALL命令调用存储过程。语法如下-
CALL yourStoredProcedureName;
调用上面的存储过程来循环遍历第一个表的所有行。查询如下-
mysql> call Sp_AllRowsOfATable();
调用存储过程之后,让我们检查第二个表发生了什么。查询如下-
mysql> select StudentId from SecondTableRows;
输出结果
+-----------+| StudentId |
+-----------+
| 1 |
| 100 |
| 300 |
| 400 |
+-----------+
4 rows in set (0.00 sec)
以上是 如何遍历MySQL中表的所有行? 的全部内容, 来源链接: utcz.com/z/331274.html