J'ai une table qui ressemble à quelque chose comme:

Nom de la table: "interactions"

id: number 
type: text
user_id: number

Je veux obtenir tous les user_ids qui ont une ligne avec type = "type_A" mais pas une ligne avec type = "type_B"

Est-ce possible?

0
user2101699 17 sept. 2020 à 08:30

2 réponses

Meilleure réponse

Vous pouvez essayer d'utiliser not exists

select distinct user_id from interactions i
where type='type_A' and 
not exists (select 1 from interactions i1 where i.user_id=i1.user_id and type='type_B')

Une autre option pourrait être

select user_id from interactions
group by user_id 
having min(type)='type_A' and max(type)='type_A'
1
Fahmi 17 sept. 2020 à 05:40

Vous pouvez utiliser la condition AND dans SQL

Ça va comme ça:

WHERE condition1 ET condition2 ... ET condition_n;

Voir la documentation https://www.techonthenet.com/mysql/and.php

De plus, vous pouvez le rendre différent de quelque chose.

0
koko_dump 17 sept. 2020 à 05:33