Mysql
 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;

Резултат от mysql80. :

+============+=============+==========+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Уместност на пълнотекстово търсене на Mysql в множество таблици

  2. Актуализирайте MySQL, без да указвате имена на колони

  3. Подготвени множество Insert mysqli

  4. Показване на падащо меню в HTML с PHP

  5. Защо MySQL InnoDB вмъкванията/актуализациите на големи таблици стават много бавни, когато има няколко индекса?