如何遍历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

回到顶部