С NOT EXISTS
:
SELECT l.* FROM links l
WHERE l.id_imported_urls = 23965 AND l.user_id = 4
AND NOT EXISTS (
SELECT 1 FROM links
WHERE user_id <> l.user_id AND id_imported_urls = l.id_imported_urls
)
Это вернет строку, только если id_imported_urls = 23965
не существует ни для какого user_id <> 4
. Этот запрос:
select id_imported_urls
from links
group by id_imported_urls
having count(distinct user_id) = 1
возвращает все id_imported_urls
, принадлежащие только одному пользователю, поэтому вы можете использовать его следующим образом:
select * from links
where id_imported_urls in (
select id_imported_urls
from links
group by id_imported_urls
having count(distinct user_id) = 1
)
, чтобы получить все строки, содержащие эти id_imported_urls
.