Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL Chèn vào bảng các hàng mới trước trường trong cùng một bảng

Trong trường hợp MySQL 8.0 trở lên, bạn có thể sử dụng truy vấn tiếp theo:

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;

Kết quả từ 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giải quyết lỗi này - dbWriteTable ()

  2. Truy xuất trường UTC DATETIME từ MySQL trong Java khi múi giờ máy chủ không phải là UTC

  3. Kết nối được thực hiện với Google Cloud SQL bị gián đoạn

  4. Cờ MySQL trong bãi chứa

  5. Hiển thị các ký tự tiếng Trung / UTF8 trong MySQL Chọn bằng ứng dụng PuTTY &dòng lệnh