0
votes

Sélectionnez Exclure un champ pour une valeur particulière dans la requête MySQL dans la même colonne

Peut-être que la déclaration n'est pas très claire, alors vous y allez. Nous avons une table mysql où nous avons des colonnes comme ceci: xxx

Je veux écrire une instruction SELECT où nous sélectionnerons user_id et action pour le même user_id Où Action est Receect_Content mais la sortie finale ne contient pas réception_content de sorte que la sortie est la suivante: xxx

J'ai essayé du cas, mais il sélectionne également le champ Receive_Content que je veux exclure.


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser un Existe clause pour vérifier qu'un user_id a un active_content action, puis vérifiez également que l'action pour chaque ligne n'est pas réception_content : xxx

sortie: xxx

démo sur dbfiddle


2 commentaires

Hey merci Nick, pour la réponse rapide, cela a fonctionné. Vous demandera d'autres améliorations si nécessaire, est-ce que ça va?


@ 0Decimal0 Pas de problème. Si les améliorations sont majeures, vous devriez probablement vous poser une autre question, mais autrement heureux de répondre.



0
votes

Essayez d'utiliser la requête intérieure:

select a.user_id, a.action
from table a
join table b on b.user_id = (select b2.user_id from table b2 where b2.action = "receive_content" and b.user_id = b2.user_id)
where a.action <> "receive_content"


0 commentaires

0
votes

Vous devez rejoindre la table avec lui-même, après la ligne de filtrage que vous souhaitez conserver et sélectionner des colonnes que vous souhaitez.

La solution peut être cette requête: P>

select a.user_id,a.action 
   from actions a join actions b on a.user_id = b.user_id and a.id !=b.id 
   where 
     b.action='receive_content' and a.action != 'receive_content'     


0 commentaires