Можно ли 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 шт):
Предлагаю примерно так через 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 |

