Я застрял в проблеме, описанной ниже:
id | user_id | admin
1 | 1 | 2
2 | 1 | 5
3 | 2 | 5
4 | 2 | 5
5 | 3 | 5
6 | 4 | 5
Мне нужно написать запрос, чтобы получить всех пользователей, которые связаны с идентификатором администратора, переданным в WHERE
AND
имеет несколько транзакций (может быть с другим администратором).
If user_id is 5 then result should come
user_id
1
2
Пытался
SELECT
user_id ,
COUNT(*) count
FROM
table
WHERE admin = 5
GROUP BY
user_id
Having
count > 1
но этот вышеупомянутый запрос пропускает user_id, который имеет только одну транзакцию с admin = 5 и имеет другую строку с другим администратором.
Предложения?
Совокупность на user_id
и утверждать, что:
5
)
SELECT user_id
FROM yourTable
GROUP BY user_id
HAVING SUM(CASE WHEN admin = 5 THEN 1 ELSE 0 END) > 0 AND
COUNT(*) > 1;
В вашем фильтре запросов на admin=5
и с отдельным подзапросом для тех пользователей, у которых более 1 транзакции. У вас должен быть счетчик в подзапросе, потому что критерий admin=5
не применяется к счету.
SELECT DISTINCT user_id
FROM yourTable
WHERE admin_id=5
AND user_id IN (SELECT user_id FROM yourTable GROUP BY user_id HAVING COUNT(*)>1)
SELECT user_id FROM test_table1 GROUP BY user_id HAVING SUM (CASE WHEN admin = & n THEN 1 ELSE 0 END)> 0 И COUNT (user_id)> 1;
Если я понимаю ваш вопрос, вы хотите спросить:
Это даст вам список каждого пользователя (только идентификатор пользователя)
SELECT DISTINCT table.user_id
FROM table
JOIN (
SELECT user_id
,COUNT(DISTINCT admin_id) num_admins
FROM table
GROUP BY user_id
HAVING COUNT(DISTINCT admin_id) > 1
) multi_admin
ON table.user_id = multi_admin.user_id
WHERE admin = 5 -- if you want to look only at user_ids somehow associated with
Попробуй это
SELECT user_id from 'tablename' WHERE admin IN( SELECT admin FROM 'tablename' GROUP BY admin HAVING count(*) > 1)
user_id = 3
есть первая запись сadmin = 5
и вторая сadmin = 4
(если мы упорядочиваем по столбцуid
), поэтому мы не должны учитывать 3 в наборе результатов. Если мы не рассматриваем первую запись, а затем применяем нашу логику, каким должен быть обновленный запрос?