Для того чтобы получить список не взаимных подписок в SQL, вы можете использовать операторы JOIN и NOT IN. Предположим, у вас есть две таблицы - "пользователи" и "подписки". Таблица "пользователи" содержит информацию о пользователях, а таблица "подписки" содержит информацию о том, кто подписан на кого.
Для начала, мы можем использовать оператор JOIN для объединения таблицы "подписки" с самой собой, чтобы найти всех пользователей, у которых есть взаимная подписка:
SELECT A.user_id, B.user_id FROM подписки AS A JOIN подписки AS B ON A.user_id = B.subscriber_id AND A.subscriber_id = B.user_id
Затем, чтобы найти все не взаимные подписки, мы можем использовать оператор NOT IN, чтобы исключить из этого списка пользователей, у которых есть взаимные подписки:
SELECT user_id FROM пользователи WHERE user_id NOT IN ( SELECT A.user_id FROM подписки AS A JOIN подписки AS B ON A.user_id = B.subscriber_id AND A.subscriber_id = B.user_id )
Этот запрос вернет список пользователей, у которых нет взаимных подписок. Вы можете заменить "пользователи" и "подписки" на соответствующие имена ваших таблиц в запросе.
Заметьте, что этот запрос может быть неэффективным для больших таблиц, поскольку он использует вложенный подзапрос. В таких случаях вы можете использовать временные таблицы или более сложные конструкции JOIN для оптимизации запроса.