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

データベース上のすべてのテーブルをループして列を更新する方法

    簡単なオプションの1つは、UPDATEを生成するクエリを作成することです。 すべてのテーブルで実行するステートメント:

    SELECT CONCAT('UPDATE ', a.table_name, ' SET date = "2016-04-20" WHERE name = "Example";')
    FROM information_schema.tables a
    WHERE a.table_schema = 'YourDBNameHere'
    

    このクエリからの出力をコピーして、クエリエディタに貼り付け、実行することができます。

    更新:

    @PaulSpiegelが指摘したように、HeidiSQLなどのエディターを使用している場合、結果セットの各レコードを手動でコピーする必要があるため、上記のソリューションは不便な場合があります。 GROUP_CONCAT()を使用したトリックの採用 必要なすべてのUPDATEを含む単一の文字列を提供します その中のクエリ:

    SELECT GROUP_CONCAT(t.query SEPARATOR '; ')
    FROM
    (
        SELECT CONCAT('UPDATE ', a.table_name,
                      ' SET date = "2016-04-20" WHERE name = "Example";') AS query,
            '1' AS id
        FROM information_schema.tables a
        WHERE a.table_schema = 'YourDBNameHere'
    ) t
    GROUP BY t.id
    


    1. MySQLでコメント機能を最大限に活用する方法

    2. ORA-01950:表領域'USERS'に対する権限がありません

    3. PostgreSQL12での進捗レポートの機能強化

    4. エンティティフレームワークは、コンパイルのたびに初めてロードするのが非常に遅い