У меня есть таблица "Пользователи" и таблица "Платежи". Мне нужен запрос, в котором перечислены пользователи, которые НЕ имеют запись в таблице платежей, где поле PaymentCompleted = 1.
Это столбцы в таблицах (упрощенные):
Users: UserID, UserName
Payments: PaymentID, UserID, PaymentCompleted
Запрос должен выбрать поле UserName.
select distinct UserName
from Users left outer join Payments on Users.UserID = Payments.UserID
where PaymentCompleted is NULL or PaymentCompleted != 1
SELECT UserName
FROM Users u
WHERE NOT EXISTS(Select 1
from Payments p
Where p.UserId = u.UserId
AND p.PaymentCompleted = 1)
выберите * из t_users T, где T.userid не существует (выберите p.userid из t_payments t, где PaymentCompleted = 1).
Одно замечание: предложения "не в" могут быть вычислительно неэффективными для большого количества записей. Если вы начнете видеть проблемы с производительностью, вы можете захотеть сделать рефакторинг/редизайн.