mysql,遍历列名

Posted

技术标签:

【中文标题】mysql,遍历列名【英文标题】:mysql, iterate through column names 【发布时间】:2011-06-24 10:18:13 【问题描述】:

我想从 mysql 表中获取所有列名,遍历每个列名,然后使用这些列名作为变量运行存储过程。大意是:

colnames = get column names from table

for each colname
  if something changed then
    do something
  else
    do something else

看起来SHOW COLUMNS FROM myTable 会给我列名,但我如何让列名进入循环?

我真的很想使用原生 SQL 在存储过程中运行所有这些。因为我还在学习 MySQL 的复杂性,这对我的项目很有帮助。感谢您的帮助。

【问题讨论】:

我只想在 MySQL 工作台中将其编写为本机 SQL。我打算将列名用作 UPDATE 查询的一部分。 【参考方案1】:

我想你想要这样的东西:

DECLARE col_names CURSOR FOR
  SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position;


select FOUND_ROWS() into num_rows;

SET i = 1;
the_loop: LOOP

   IF i > num_rows THEN
        CLOSE col_names;
        LEAVE the_loop;
    END IF;


    FETCH col_names 
    INTO col_name;     

     //do whatever else you need to do with the col name

    SET i = i + 1;  
END LOOP the_loop;

【讨论】:

这看起来正是我所追求的。非常感谢!第一个 SELECT 语句有效,但是,当我添加“DECLARE col_names CURSOR FOR”时,我遇到了语法错误。有什么想法吗? 好的!结果我只需要更改分隔符并声明 num_rows, i, col_name 并且效果很好。非常感谢! 而且还需要open col_names;【参考方案2】:

您可以针对 information_schema 编写查询以获取列名:

SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position

然后返回列名,就像表中的任何数据一样。

【讨论】:

这是一个很好的开始给我列名!不过,我如何将它们放入变量(列表?)中以迭代它们?

以上是关于mysql,遍历列名的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历数据框列名 - R

Python Pandas 遍历行并访问列名

循环遍历 pandas 列名以创建列表

Pandas 遍历行并找到列名

循环遍历 R 中列名的特定子集

T-SQL for 循环遍历列名并插入