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

SQL同じテーブルの各フィールドの新しい行をテーブルに挿入します

    MySQL 8.0以降の場合、次のクエリを使用できます:

    INSERT IGNORE INTO products
    SELECT 
        id_product,
        143 as id_category,
        (
           SELECT MAX(position) 
           FROM products
           WHERE id_category = 143
         ) + 
         (row_number() over (order by id_product)) as position
    FROM products
    WHERE id_category = 12;
    

    SQLize.online の結果 :

    +============+=============+==========+
    | id_product | id_category | position |
    +============+=============+==========+
    | 190        | 12          | 10       |
    +------------+-------------+----------+
    | 191        | 12          | 11       |
    +------------+-------------+----------+
    | 230        | 12          | 12       |
    +------------+-------------+----------+
    | 15         | 143         | 12       |
    +------------+-------------+----------+
    | 150        | 143         | 50       |
    +------------+-------------+----------+
    | 190        | 143         | 51       |
    +------------+-------------+----------+
    | 191        | 143         | 52       |
    +------------+-------------+----------+
    | 230        | 143         | 53       |
    +------------+-------------+----------+
    



    1. MySQL:Linuxサーバーの再起動時にmysqlディレクトリの所有権が「service_account」から「mysql」に変更されます

    2. このストアドプロシージャの何が問題になっていますか?

    3. 古語のスペリングに関する他のクエリの提案(例:GoogleのDid You Mean)

    4. PythonとSQLiteの警告