Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem projektowania procedur składowanych MySQL. Odrzucenie czy hierarchia?

Dobrym miejscem do rozpoczęcia byłoby:

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;

Wewnątrz procedury składowanej umieść to w kursorze, iteruj nad kursorem i dla każdego wiersza wykonaj INSERT IGNORE. Tzn.:

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;

Aby odpowiedzieć na twoje zaktualizowane pytanie, nie jesteś do końca pewien, czy masz na myśli połączone jako za pomocą relacji między unikalnymi wierszami (do przechowywania tej relacji potrzebne byłyby dwie kolumny, więc byłoby to dość podobne). Lub jeśli masz na myśli jedną tabelę zawierającą wszystkie liczby, a drugą tabelę z dwiema kolumnami zawierającą relacje między wierszami pierwszej tabeli.

Lub na koniec, jeśli chcesz, aby tabela zawierała tylko ciągi z „1-2”, „1-3” itp. W takim przypadku zachowałbym ją jako dwie oddzielne kolumny i po prostu wypisz je jako ciągi za pomocą CONCAT podczas sondowania stół :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO MySQL:użyć PDO::ATTR_EMULATE_PREPARES czy nie?

  2. mysql LEFT join dla maksymalnej wartości prawej tabeli

  3. Mysql wybierz rekordy z przesunięciem

  4. Wczytaj plik tekstowy rozdzielany tabulatorami do tabeli MySQL za pomocą PHP

  5. JSON_ARRAY_APPEND() – Dołącz wartości do tablicy JSON w MySQL