Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Masalah Desain Prosedur Tersimpan MySQL. Rekusi atau Hirarki?

Tempat yang baik untuk memulai adalah:

SELECT 
    A.num_1, B.num_2 
FROM 
    Smaller AS A JOIN Smaller AS B ON (A.num_1 < B.num_2) 
ORDER BY A.num_1, B.num_2;

Di dalam prosedur tersimpan Anda, letakkan ini ke dalam kursor, ulangi kursor dan untuk setiap baris lakukan INSERT IGNORE. Yaitu:

DECLARE num1,num2 INT;
DECLARE done DEFAULT 0;
DECLARE mycursor CURSOR FOR SELECT # use the select above, im lazy here
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN mycursor;

my_loop: LOOP
    FETCH mycursor INTO num1, num2;
    IF done THEN
       LEAVE my_loop;
    END IF;
    INSERT IGNORE INTO Smaller VALUES (num1,num2);
END LOOP;

Untuk menjawab pertanyaan Anda yang diperbarui, sementara tidak sepenuhnya yakin apakah maksud Anda terhubung melalui hubungan antara baris unik (Anda akan memerlukan dua kolom untuk menyimpan hubungan ini, jadi itu akan sangat mirip). Atau jika maksud Anda Anda memiliki satu tabel yang berisi semua angka, dan dua tabel kolom lainnya yang berisi hubungan antara baris tabel pertama.

Atau, akhirnya, jika Anda menginginkan tabel yang hanya berisi string dengan "1-2", "1-3" dll. Jika demikian, saya akan menyimpannya sebagai dua kolom individual dan hanya menampilkannya sebagai string menggunakan CONCAT saat Anda melakukan polling meja :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String ke stempel waktu di MySQL

  2. PHP &MySQL Bagaimana menampilkan kategori setiap sub kategori dari database

  3. SUBDATE() Contoh – MySQL

  4. Cara memilih tanggal terlama dari MySQL

  5. mysql Memilih dari dua tabel yang berbeda.