Добро място за начало би било:
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;
Вътре във вашата съхранена процедура поставете това в курсор, повторете курсора и за всеки ред направете INSERT IGNORE. Т.е.:
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;
За да отговоря на актуализирания ви въпрос, макар и да не съм напълно сигурен дали имате предвид свързан чрез връзки между уникални редове (ще ви трябват две колони, за да съхранявате тази връзка, така че би било доста подобно). Или ако имате предвид, че имате една таблица, съдържаща всички числа, и друга таблица с две колони, съдържащи връзки между редовете на първата таблица.
Или, накрая, ако искате таблица, съдържаща само низове с "1-2", "1-3" и т.н. Ако случаят е такъв, бих я запазил като две отделни колони и просто бих ги извел като низове, използвайки CONCAT, когато анкетите масата :)