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

Sao chép hàng nhưng với id mới

Giả sử bảng của bạn có các trường sau:

( pk_id int not null auto_increment primary key,
  col1 int,
  col2 varchar(10)
)

sau đó, để sao chép giá trị từ hàng này sang hàng khác với giá trị khóa mới, truy vấn sau có thể hữu ích

insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;

Điều này sẽ tạo ra một giá trị mới cho pk_id trường và sao chép các giá trị từ col1col2 của hàng đã chọn.

Bạn có thể mở rộng mẫu này để áp dụng cho nhiều trường hơn trong bảng.

CẬP NHẬT :
Đối với những nhận xét từ JohnP và Martin -

Chúng ta có thể sử dụng bảng tạm thời để đệm trước từ bảng chính và sử dụng nó để sao chép lại vào bảng chính. Việc cập nhật trường tham chiếu pk trong bảng tạm thời sẽ không hữu ích vì nó có thể đã có trong bảng chính. Thay vào đó, chúng ta có thể bỏ trường pk khỏi bảng tạm thời và sao chép tất cả các trường khác vào bảng chính.

Tham khảo câu trả lời của Tim Ruehsen trong bài đăng được giới thiệu :

CREATE TEMPORARY TABLE tmp SELECT * from my_table WHERE ...;
ALTER TABLE tmp drop pk_id; # drop autoincrement field
# UPDATE tmp SET ...; # just needed to change other unique keys
INSERT INTO my_table SELECT 0,tmp.* FROM tmp;
DROP TEMPORARY TABLE tmp;

Hy vọng điều này sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi Nifi PutSQL Timestamp / Datetime error không thể chuyển đổi được

  2. Chỉ mục đa ngôn ngữ với Laravel Scout và Algolia

  3. Tôi nên lưu trữ bao nhiêu chữ số có nghĩa trong cơ sở dữ liệu của mình cho một tọa độ GPS?

  4. Làm cách nào để đặt dấu gạch ngược vào tên cột được gọi là khóa cho chế độ ngủ đông

  5. Chèn nhiều email vào mysql bằng cách sử dụng một textarea