sql >> Database teknologi >  >> RDS >> Mysql

MySQL Stored Procedure Design Problem. Recusion eller hierarki?

Et godt sted at starte ville være:

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;

Inde i din lagrede procedure skal du sætte dette i en markør, gentage over markøren og for hver række lav en INSERT IGNORE. Dvs:

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;

For at besvare dit opdaterede spørgsmål, er jeg ikke helt sikker på, om du mener forbundet som ved hjælp af relationer mellem unikke rækker (du ville have brug for to kolonner for at gemme denne relation, så det ville være ret ens). Eller hvis du mener, at du har en tabel, der indeholder alle tal, og en anden tabel med to kolonner, der indeholder relationer mellem rækkerne i den første tabel.

Eller, endelig, hvis du ønsker en tabel, der kun indeholder strenge med "1-2", "1-3" osv. Hvis det er tilfældet, ville jeg beholde den som to individuelle kolonner og bare udskrive dem som strenge ved hjælp af CONCAT, når du poller bordet :)




  1. SQLite Indsæt

  2. Java MySQL Timestamp tidszone problemer

  3. ReplicationManager kastede en undtagelse ved at åbne en forbindelse

  4. T-SQL tirsdag #65:Lær noget nyt