sql >> Databáze >  >> RDS >> Mysql

SQL Vložit do tabulky nové řádky pro každé pole ve stejné tabulce

V případě MySQL 8.0 nebo novější můžete použít následující dotaz:

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;

Výsledek z aSQL :

+============+=============+==========+
| 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. vyberte agregační funkci a všechny ostatní sloupce

  2. Mysql odstranit pomocí poddotazu

  3. Moje databáze MySQL je poškozená... Co teď mám dělat?

  4. Výběr odlišné kombinace 2 sloupců v mysql