【问题标题】:Adding a new column for numbering in MySQL procedure在 MySQL 过程中添加新的编号列
【发布时间】:2016-03-08 00:30:25
【问题描述】:

我想在 MySQL 中创建一个存储过程,它显示带有行号而不是行 ID 的表的数据。像这样:

我试过这段代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `count_row`()
BEGIN
declare row_num INTEGER;
declare result INTEGER;
SELECT count(id) FROM engineers INTO row_num;
SET result=0;
WHILE(result<=row_num)
DO
SELECT result=result+1, name, date FROM engineers ;
END WHILE;
END

结果是在 MySQL 中创建了未定义数量的选项卡。 然后我尝试了这段代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `count_row`()
BEGIN
declare row_num INTEGER;
declare result INTEGER;
SELECT count(id) FROM engineers INTO row_num;
SET result=1;
WHILE(result<=row_num)
DO
SELECT result, name, date FROM engineers;
SET result = result +1;
END WHILE;
END

我得到了 5 个标签(等于总行数),如下所示:

第二个标签:

我想要的是只显示一个带有一个表格的选项卡,如问题的第一张图片所示。

【问题讨论】:

  • 为简单起见,您可以使用 PHP 或任何其他语言来显示编号列

标签: mysql procedure


【解决方案1】:

试试

SELECT @row_number:=@row_number+1 as RowNum, name as Engineer, date
FROM engineers, (SELECT @row_number:=0) as t
order by name;

SET @row_number:=0;
SELECT @row_number:=@row_number+1 as RowNum, name as Engineer, date
FROM engineers
order by name;

【讨论】:

  • @ 有所作为?我会试试的
  • 你也不应该需要循环。只需一个 select 语句。
  • 但是为什么 @ 会有所作为,我应该将它与所有变量一起使用?在我上大学的时候,我们使用不带 @ 的变量,它可以工作
猜你喜欢
  • 2021-12-23
  • 2017-07-20
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多