Мы можем попробовать следующий запрос, чтобы найти те id
, которые имеют оба местоположения:
SELECT id
FROM yourTable
WHERE location IN ('A', 'B')
GROUP BY id
HAVING MIN(location) <> MAX(location);
Чтобы найти те id
, имеющие только местоположение A
:
SELECT id
FROM yourTable
GROUP BY id
HAVING MIN(location) = MAX(location) AND MIN(location) = 'A';
Вышеуказанные запросы написаны так, чтобы мы могли разместить индекс на (id, location)
.MySQL должен иметь возможность использовать этот индекс для обоих запросов.