mysql,遍历列名

Rya*_*ton 10 mysql sql

我想从MySQL表中获取所有列名,循环遍历每个列名,然后使用这些列名作为变量运行存储过程.有效的东西:

colnames = get column names from table

for each colname
  if something changed then
    do something
  else
    do something else
Run Code Online (Sandbox Code Playgroud)

它看起来SHOW COLUMNS FROM myTable会给我列名称,但是如何将列名称放入循环?

我真的想在使用本机SQL的存储过程中运行所有这些.因为我还在学习MySQL的复杂性,这真的有助于我的项目.谢谢你的帮助.

use*_*714 18

我想你想要这样的东西:

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;
Run Code Online (Sandbox Code Playgroud)

  • 好!结果我只需要更改分隔符并声明num_rows,i,col_name,它工作得很好.非常感谢! (3认同)

Ned*_*der 5

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

SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position
Run Code Online (Sandbox Code Playgroud)

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

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