Un buon punto di partenza sarebbe:
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;
All'interno della tua procedura memorizzata, inserisci questo in un cursore, esegui un'iterazione sul cursore e per ogni riga fai un INSERT IGNORE. Cioè:
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;
Per rispondere alla tua domanda aggiornata, mentre non è del tutto sicuro se intendi connesso come per mezzo di relazioni tra righe uniche (avresti bisogno di due colonne per memorizzare questa relazione, quindi sarebbe abbastanza simile). O se vuoi dire che hai una tabella contenente tutti i numeri e un'altra tabella a due colonne contenente le relazioni tra le righe della prima tabella.
O, infine, se vuoi una tabella contenente solo stringhe con "1-2", "1-3" ecc. In tal caso, la terrei come due colonne singole e le emetterò semplicemente come stringhe usando CONCAT quando esegui il polling il tavolo :)