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 :)