Получить все возможные попарные сочетания значений столбца

существует таблица с номарами и названиями систем

create table mytesttable 
    (num int(3),
    sysname varchar(2));
    
insert into mytesttable
(1,'AL'),
(2,'AG'),
(3,'TS'),
(4,'NB'),
(5,'PO'),
(6,'IK'),
(7,'SX')

Необходимо написать запрос, который должен выводить все возможные сочетания систем в виде

AL-AG
AG-TS
и так далее

Не могу понять, как сравнить строки и добавлять к предыдущей.


Ответы (2 шт):

Автор решения: Rustam Kadimov

Попробуй Select t1.sysname, t2.sysname from mytesttable t1, mytesttable t2 Вроде так должно вывести все комбинации.

→ Ссылка
Автор решения: Akina

Если надо ВСЕ сочетания, то

SELECT t1.sysname sysname1, t2.sysname sysname2
FROM mytesttable 
CROSS JOIN mytesttable t2
WHERE t1.num <> t2.num

Если нужно только парно-уникальные (т.е. при наличии АА-ББ не возвращать обратное ББ-АА), то заменить оператор во WHERE с <> на >.

Если на таблицу не наложено требование уникальности sysname, и следует исключить дубликаты, то ещё добавить DISTINCT. Либо в запросе вместо копий таблицы использовать два DISTINCT-подзапроса.

Но самое главное - следует понимать, что количество выходных записей растёт квадратично от количества исходных записей. И при большом числе исходных записей результата можно просто не дождаться...

→ Ссылка