Чтобы прояснить вопрос: у вас есть таблица, содержащая два числа в каждой записи, которые объявлены «несовместимыми».У вас есть список номеров пользователей, и вы хотите проверить, содержит ли этот список «несовместимые номера».Правильно?
Вот вам простой SQL (взяв пример из комментария):
SELECT *
FROM incompatible
WHERE A IN (1, 14, 67) AND B IN (1, 14, 67);
Этот SQL возвращает все несовместимости.Когда набор результатов пуст, нет никаких несовместимостей, и все в порядке.Если вы хотите получить только этот факт, вы можете написать SELECT 1 ...
.Конечно, SQL должен быть построен динамически, чтобы содержать номера пользователей в предложениях IN
.
Чтобы ускорить запросы, вы можете создать (уникальный) индекс для обоих столбцов.Таким образом, база данных может выполнять сканирование диапазона индекса (уникально).Если в этой таблице еще нет первичного ключа, вам следует создать первичный ключ для обоих столбцов.