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

MySQL hoán đổi giá trị khóa chính

Không sử dụng các bảng tạm thời cho việc này.

Từ hướng dẫn sử dụng :

mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'

CẬP NHẬT:

Xin lỗi nếu tôi hiểu không đúng, nhưng tại sao trao đổi ba cách đơn giản không hoạt động?

Như thế này:

create table yourTable(id int auto_increment, b int, primary key(id));

insert into yourTable(b) values(1), (2);
select * from yourTable;

DELIMITER $$
create procedure pkswap(IN a int, IN b int)
BEGIN
select @max_id:=max(id) + 1 from yourTable;
update yourTableset [email protected]_id where id = a;
update yourTableset id=a where id = b;
update yourTableset id=b where id = @max_id;
END $$
DELIMITER ;

call pkswap(1, 2);

select * from yourTable;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. THAY THẾ các hàng trong bảng cơ sở dữ liệu mysql với gấu trúc DataFrame

  2. Truy vấn Django trong đó một trường trùng lặp và một trường khác

  3. cách thay đổi định dạng dấu thời gian trong mysql

  4. Di chuyển Ruby on Rails, hai khóa chính nhưng chỉ một khóa tự động tăng lên

  5. Password_verify trong PHP