Tôi có hai bảng như vậy;MySQL sửa các khoảng trống tự động trong hai bảng
id_image foo bar
1 3 5
2 8 1
3 17 88
7 14 23
8 12 9
id_image bar foo
1 2 3
1 5 6
2 18 11
2 10 12
3 8 21
3 17 81
7 29 50
7 1 14
8 10 26
8 27 34
Có khoảng cách trong tự động id_image
trong bảng đầu tiên. Trong bảng thứ hai, các id_image
đề cập đến các id_image
trong bảng đầu tiên, và có hai của mỗi ID trong đó.
Lưu ý: Bảng này là lý thuyết. Tôi không có ý tưởng trong đó khoảng cách chính xác hoặc có hoặc không có nhiều khoảng trống. Tất cả những gì tôi biết là giá trị đầu tiên là 1
và giá trị cuối cùng cao hơn tổng số hàng.
Bây giờ, tôi muốn khắc phục khoảng cách này.
Trước khi bạn nói rằng những khoảng trống không quan trọng và nếu chúng có, đó là thiết kế cơ sở dữ liệu xấu, hãy để tôi nói cho bạn biết; Tôi đồng ý với bạn.
Tuy nhiên, những gì tôi đang xử lý là hệ thống nguồn mở bên thứ ba (vô vọng phía sau) mà tôi cần nhập một lượng lớn dữ liệu hiện có không có ID tham chiếu chéo vào nhiều những cái bàn. Cách duy nhất tôi có thể đảm bảo rằng cùng một dữ liệu nhận được một ID phù hợp trong mỗi bảng trong suốt hệ thống là để nhập nó tuần tự, và điều đó có nghĩa là tôi không thể có khoảng trống.
Vì vậy, những gì tôi cần làm bây giờ là;
- Sửa khoảng trống trong cột
id_image
trong bảng đầu tiên, sao cho giá trị cuối cùng khớp với số hàng. - Chỉnh sửa cột
id_image
trong bảng thứ hai để giá trị của nó tương ứng với cùng hàng tương ứng với trước khi sửa khoảng cách.
Tôi làm cách nào để bắt đầu thực hiện việc này? Tôi hiểu rằng điều này có thể nằm ngoài khả năng của ngôn ngữ truy vấn MySQL, vì vậy các câu trả lời của PHP cũng được chấp nhận. Cảm ơn! :)
là động cơ innodb? – Sebas
Vâng. Tuy nhiên khoảng cách này là do phải nhập lại một phần dữ liệu, không phải do lỗi INSERT IGNORE. :) –
Bạn có thể khóa bảng và sau đó lặp qua nó với 'SELECT image_id MẪU bảng FORMER BY image_id ASC' và tìm thấy khoảng trống? –