Уникальное значение через два столбца - PullRequest
0 голосов
/ 26 сентября 2019

Есть ли какие-либо ограничения в MySQL, чтобы избежать ввода того же значения в тот же столбец или в другой столбец?Например, в следующей таблице:

   --------------------
   |       TABLE       |
   ---------------------
   | NUMBER1 | NUMBER2 |
   ---------------------
   |    3    |   4     |
   |    7    |   9     |
   ---------------------

Мне нужно запретить ввод числа 3 в любой из столбцов NUMBER1 или NUMBER2, поскольку значение уже существует в столбце NUMBER1;и что число 9 нельзя вводить ни в один из столбцов NUMBER1 или NUMBER2, поскольку значение уже существует в столбце NUMBER2.

Другими словами, мне нужно, чтобы каждое значение в каждом из двух столбцов было уникальным,через эти две колонки.

Заранее спасибо.

1 Ответ

0 голосов
/ 26 сентября 2019

Вот косвенное решение.Вы можете изменить структуру вашей таблицы так, чтобы она использовала только один столбец для обоих текущих столбцов.Затем введите какие-то групповые столбцы, чтобы отслеживать отношения между числами из данной записи.То есть:

grp | pos | NUMBER
1   | 1   | 3
1   | 2   | 4
2   | 1   | 7
2   | 2   | 9

Теперь вам нужно только уникальное ограничение для одного столбца NUMBER.Обратите внимание, что если вы хотите просмотреть ваши данные в том виде, в каком они есть сейчас, простой сводный запрос может обработать это:

SELECT
    grp,
    MAX(CASE WHEN pos = 1 THEN NUMBER END) AS NUMBER1,
    MAX(CASE WHEN pos = 2 THEN NUMBER END) AS NUMBER2
FROM newTable
GROUP BY
    grp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...