SQL ограниченный набор комбинаций
-
21-12-2019 - |
Вопрос
У меня есть стол с столбцами A, B, C и я хотел бы получить все комбинации записей, имеющих {b, c} уникальным. Это как значение B, и значение C появится только один раз в одном наборе.
У вас есть идеи, как это добиться этого?Я предполагаю, что выход должен содержать одну комбинацию в одном ряду, что не является проблемой.
Чтобы понять это пример:
- .
- 1,1,0
- 6,1,1
- 1,1,2
- 3,2,0
- 5,2,1
- 1,2,3
Одной из возможных комбинаций является {1,1,0}, {1,2,3}, а {6,1,1}, {5,2,1} не, потому что значение столбца C '1«Не уникален.То, что я хотел бы получить такой вывод:
1,1,0,1,2,3
6,1,1,1,2,3
.
IOW Вывод будет N-кортежи, имеющие значения B, C, уникальные.
Решение
Я думаю, что вы хотите, чтобы странная версия себя присоединиться:
select t1.*, t2.*
from table t1 join
table t2
on t1.b <> t2.b and t1.c <> t2.c;
.
Это вернет все пары из таблицы, где столбцы b
имеют различные значения, а столбцы Renacodicetacodcode имеют различные значения.
Другие советы
Это то, для чего есть группа.Он сочетает в себе все записи с одинаковыми значениями в группе по списку в одну строку.
select B, C
from my_table
group by B, C
. Вопрос немного расплывчатой, если вы хотите только значения решения B & C используют решение @linger, если вы хотите, если вы хотите, чтобы все поля для записей, которые имеют комбинацию B, C, которая возникает в этой записи, но нигде не использовать
SELECT MAX(A),B,C FROM T
GROUP BY B,C
HAVING COUNT(*) = 1
.