Dobrým místem pro začátek by bylo:
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;
Uvnitř uložené procedury to vložte do kurzoru, iterujte přes kurzor a pro každý řádek proveďte INSERT IGNORE. Tj.:
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;
Abych odpověděl na vaši aktualizovanou otázku, i když si nejsem úplně jistý, zda máte na mysli spojené jako pomocí vztahů mezi jedinečnými řádky (k uložení tohoto vztahu byste potřebovali dva sloupce, takže by to bylo docela podobné). Nebo pokud máte na mysli, že máte jednu tabulku obsahující všechna čísla a další tabulku se dvěma sloupci obsahující vztahy mezi řádky první tabulky.
Nebo konečně, pokud chcete tabulku obsahující pouze řetězce s "1-2", "1-3" atd. Pokud je tomu tak, ponechal bych ji jako dva samostatné sloupce a při dotazování bych je vypsal jako řetězce pomocí CONCAT stůl :)