Всем доброго времени суток. Попалась интересная задачка. Есть таблица Role с колонками ClientID и RoleName. Как можно найти в ней записи ClientID для которых остутствует RoleName ='User'. Знаю что общее число DISTINCT ClientID 897, а WHERE RoleName = 'User' 888.
SELECT ClientID
FROM Role
WHERE NOT RoleName = 'User'
Проблема была, что клиенты не были уникальными Написал такую кверю и нашел все ClientID
SELECT DISTINCT ClientID FROM Role
WHERE ClientID NOT IN (SELECT ClientID FROM Role
WHERE RoleName = 'User' AND clientID IS NOT NULL);
distinct во вложенном запросе сократит затраты памяти базы и времени выполнения.
когда тестировал 100 лет назад , оптимальный вариант был
SELECT DISTINCT ClientID from tab t1
LEFT JOIN tab t2 ON t2.ClientID=t1.ClientID AND t2.RoleName='user'
WHERE t2.id IS NULL
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Возник вопрос, возможно, глупый, но все жеЕсть приложение на php и бд с субд Postgresql с расширением postgis