Присоединение к таблице, но совпадение только в том случае, если в ней есть хотя бы одна строка на основе условия - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь найти всех пользователей, у которых есть хотя бы одна транзакция с StoreLocationID = 123.

Основной запрос для подсчета пользователей:

SELECT COUNT(*) 
FROM Users u    

Таблица транзакций выглядит следующим образом:

Transactions
- ID
- UserID
- Amount
- Date
- StoreLocationID

Как найти ВСЕХ пользователей, у которых есть хотя бы 1 транзакция, где StoreLocationID = 123.

Я могу присоединиться к таблице, но мне просто нужнознать, есть ли хотя бы 1 строка с StoreLocationID = 123.

1 Ответ

2 голосов
/ 16 октября 2019

Вы можете использовать коррелированный подзапрос с условием exists:

select * 
from users u
where exists (
    select 1
    from transactions t
    where t.userID = u.userID
    and t.StoreLocationID = 123
)

. Это даст вам всех пользователей, у которых есть хотя бы одна транзакция в магазине 123.

Если выпросто хочу посчитать таких пользователей, тогда:

select count(*) 
from users u
where exists (
    select 1
    from transactions t
    where t.userID = u.userID
    and t.StoreLocationID = 123
)

Или:

select count(distinct userID) from transactions where StoreLocationID = 123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...