0
votes

Comment créer la bonne requête?

J'essaie d'écrire une requête:

Sélectionnez ID des utilisateurs où Status = 3

Mais si cet exemple renvoie une réponse vide, j'ai au lieu de sélectionner pour sélectionner l'identifiant où Status = 4 , et s'il renvoie à nouveau vide, où Statut = 5 .

Comment puis-je écrire une seule requête pour résoudre ce problème?


3 commentaires

On dirait que vous souhaitez utiliser une sous-requête dans votre clause.


Cet identifiant de colonne est-il unique? Si aussi le résultat pour Statut = 5 est vide, avez-vous besoin de rechercher des résultats pour statut = 6?


Statut 5 Ne peut jamais être vide, au moins un utilisateur avec le statut 5 existe


4 Réponses :


3
votes

Vous pouvez utiliser ou conditionner ou utiliser dans l'opérateur

SELECT id FROM users WHERE status IN (3,4,5)


3 commentaires

Son wierd mais 9 sorti des 10 fois, vous pouvez mieux réécrire cela à Union TOUT type de questions telles que Sélectionnez ID des utilisateurs où Status = 3 Union ... Statut = 4 ... Union ... Statut = 5 La base de données d'Oracle est-ce que cela rewite automatique pour la plupart des ou ou in () requêtes. Ou parce que ceux-ci sont incrémentés des valeurs, vous améliorez votre mieux en utilisant le statut entre 3 et 5 et forcer une balayage de plage.


Peut-être peut-être commencer à apprendre la requête, je veux lui fournir une option pour lui, peut-être que je vais supprimer la réponse bientôt


THEQ Requête retournera le statut 5 même si l'état 3 existe.



4
votes

Je pense que vous voulez simplement: xxx

si vous voulez plusieurs utilisateurs: xxx

Si vous avez une liste fixe que vous souhaitez Testez, vous pouvez également utiliser: xxx


1 commentaires

Malheureusement, j'ai besoin d'obtenir tous les utilisateurs avec ce statut, NT un seul



0
votes

Je vais utiliser la déclaration de cas dans la clause WHERE:

select id 
from users
where status = case when status = 3 and id is null then 4
                    when status = 4 and id is null then 5
               else 3
               end


0 commentaires

0
votes

En supposant que votre table ressemble à ceci: xxx

et en fonction de votre état où vous souhaitez voir l'état le plus bas pour chaque identifiant, vous pouvez utiliser min () < / code> opérateur. Donc, à partir de votre requête d'origine: xxx

alors vous obtiendrez un résultat comme celui-ci: xxx


0 commentaires