sql >> Database >  >> RDS >> Mysql

MySQL Stored Procedure Design Probleem. Recusie of hiërarchie?

Een goede plek om te beginnen zou zijn:

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;

Plaats dit in uw opgeslagen procedure in een cursor, herhaal de cursor en voer voor elke rij een INSERT IGNORE uit. Dwz:

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;

Om je bijgewerkte vraag te beantwoorden, hoewel je niet helemaal zeker weet of je verbonden bedoelt door middel van relaties tussen unieke rijen (je zou twee kolommen nodig hebben om deze relatie op te slaan, dus het zou vrij gelijkaardig zijn). Of als je bedoelt dat je één tabel hebt met alle getallen, en een andere tweekolomstabel met relaties tussen de rijen van de eerste tabel.

Of, ten slotte, als je een tabel wilt met alleen strings met "1-2", "1-3" enz. Als dat het geval is, zou ik het als twee afzonderlijke kolommen houden en ze gewoon als strings uitvoeren met CONCAT wanneer je poll de tafel :)




  1. Hoe JSON-gegevens zoeken in MySQL?

  2. hibernate orakelreeks produceert grote opening

  3. hoe print een record uit de database wanneer de gebruiker opties selecteert in het vervolgkeuzemenu? dynamisch programma

  4. Haal MAX uit een GROUP BY