sql >> データベース >  >> RDS >> Mysql

mysqlテーブルのすべての列を特定の値に設定します

    短くて単純なステートメントを使用して70列すべてを単一の値に更新する方法を探している場合は、更新を行うためのストアドプロシージャを作成することをお勧めします。そうすれば、完全な更新構文を1回書き出すだけで済み、ストアドプロシージャを呼び出すことで何度も再利用できます。

    CREATE PROCEDURE update_all_columns (p_new_value SMALLINT, p_id INT) ...
    
    CALL update_all_columns(1,2);
    

    もう1つのトリックは、information_schema.columnsテーブルを使用してupdateステートメントを生成し、ストアドプロシージャのコーディングを面倒にしないようにすることです。

    このようなもの:

    SELECT concat('UPDATE ',
    table_name,
    ' SET ',
    group_concat(column_name separator ' = p_new_value, '),
    ' = p_new_value',
    ' WHERE id = p_id;') as sql_stmt
    FROM information_schema.columns 
    WHERE table_schema = 'your_schema' 
    AND table_name = 'tablename'
    AND column_name != 'id'
    


    1. MariaDBでのUNHEX()のしくみ

    2. mysqlレコードの削除がcodeIgniterで機能していません

    3. MySQL DATETIME精度(joda-time、Hibernate、org.jadira.usertype、hbm2ddl)

    4. Flywayのプレースホルダー式を無視するにはどうすればよいですか?