Можно ли sql-запросом найти группу записей с разными значениями по всем полям

Исходные данные(таблица в прикреплении) + нужны группы с количеством 4-е(для данной размерности), у которых нет повторов по одним и тем же полям. Тут может быть ТОЛЬКО две такие группы(получены просто циклом): 1-я [1,3,2,3], [2,1,5,2], [3,4,3,6], [4,2,6,5] и 2-я [1,2,3,2], [2,4,2,5], [3,1,6,3], [4,3,5,6], у которых нет повтора по одному и тому же полю(или при одном и том же индексе для соответствующих массивов). Т.е., если я делаю просто select distinct row1, row2, row3, row4 from four, то, конечно, я получу все 16 записей, т.к. если брать по ВСЕМ 4-м полям, то тут нет повторов, но, мне нужно было бы что-то наподобие select distinct row1, distinct row2, distinct row3, distinct row4 from four(т.е. distinct как бы по каждому полю ОТДЕЛЬНО), но, как я понимаю, такого не бывает? Или возможен какой-то другой подход?

введите сюда описание изображения

Т.е. возможен ли тут sql-запрос, который бы давал результат введите сюда описание изображения

...или введите сюда описание изображения

...тут дамп для таблицы введите сюда описание ссылки


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

Автор решения: ValNik

Предлагаю примерно так через SQL

SELECT * FROM four as t1
inner join four as t2 on t1.row1<>t2.row1 and t1.row2<>t2.row2
   and t1.row3<>t2.row3 and t1.row4<>t2.row4 
   and t2.id>t1.id
inner join four as t3 on t1.row1<>t3.row1 and t1.row2<>t3.row2
   and t1.row3<>t3.row3 and t1.row4<>t3.row4 
   and t2.row1<>t3.row1 and t2.row2<>t3.row2
   and t2.row3<>t3.row3 and t2.row4<>t3.row4 
   and t3.id>t2.id
inner join four as t4 on t1.row1<>t4.row1 and t1.row2<>t4.row2
   and t1.row3<>t4.row3 and t1.row4<>t4.row4 
   and t2.row1<>t4.row1 and t2.row2<>t4.row2
   and t2.row3<>t4.row3 and t2.row4<>t4.row4 
   and t3.row1<>t4.row1 and t3.row2<>t4.row2
   and t3.row3<>t4.row3 and t3.row4<>t4.row4 
   and t4.id>t3.id 
order by t1.id

Результат такой:

id1 r.1 r.2 r. r.4 id2 r.1 r.2 r.3 r.4 id3 r.1 r.2 r.3 r.4 id4 r.1 r.2 r.3 r.4
2 1 2 3 2 8 2 4 2 5 9 3 1 6 3 15 4 3 5 6
3 1 3 2 3 5 2 1 5 2 12 3 4 3 6 14 4 2 6 5

Сокращенно, нагляднее, только Id строк

Id1 Id2 Id3 Id4
2 8 9 15
3 5 12 14
→ Ссылка