SQL を使用して MySQL テーブルの列名を取得および反復処理するには、次のアプローチの採用を検討してください。
1.列名の取得
SHOW COLUMNS FROM [table_name] ステートメントを使用して、指定したテーブル内のすべての列名のリストを取得します。このコマンドは、各行が単一の列を表し、列名などのメタデータを含む結果セットを生成します。
SHOW COLUMNS FROM table_name;
2.カーソルの作成
列名の反復処理を有効にするには、DECLARE col_names CURSOR FOR 構文を使用してカーソルを作成します。ここで、col_names はカーソルの名前を表します。カーソル定義内で、列名を取得するクエリを指定し、列名が順序位置で順序付けされていることを確認します。
DECLARE col_names CURSOR FOR SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table_name' ORDER BY ordinal_position;
3.列数の決定
ループ制御を容易にするために、FOUND_ROWS() 関数を実行し、結果を変数 num_rows に格納します。この値は、カーソル クエリによって取得された行 (したがって列) の合計数を表します。
SELECT FOUND_ROWS() INTO num_rows;
4。列の反復
SET i = 1 ステートメントを使用してループに入ります。ここで、i は 1 に初期化された反復子変数です。ループ内で、FETCH col_names INTOcol_name ステートメントを使用して各列名を取得します。
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;
5. 順次、col_name 変数に格納されます。ストアド プロシージャの実行
ループ内で、オプションで列名を変数として使用してストアド プロシージャを実行できます。たとえば、次のステートメントは sp_my_proc という名前のストアド プロシージャを呼び出し、col_name をパラメータとして渡します:
CALL sp_my_proc(col_name);
6。カーソルを閉じる
ループが完了したら、CLOSE ステートメントを使用してカーソルを閉じ、関連するリソースを解放します。
CLOSE col_names;
以上がネイティブ SQL を使用して MySQL の列名を反復処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。