Besoin d'une assistance avec l'instruction SQL pour la condition inférieure à la condition. Avoir 3 colonnes dans une table (nom de table), SNO (enregistrements uniques), nom (il existe plusieurs enregistrements pouvant avoir le même nom), condition (vrai, faux). Besoin d'extraire tous les enregistrements si le dernier enregistrement true uniquement.
ont essayé ci-dessous Query P> attendu: Si le dernier enregistrement (SNO (max)) a la valeur = vrai ( Colonne de condition) Puis renvoyez cet enregistrement, sinon Aucun enregistrement affiché. p> réel: Tous les enregistrements sont affichés, y compris la condition true et false p> p>
4 Réponses :
pourrait être utile d'utiliser un endroit où il existe sur une sous-requête pour condition TRUE et SNO = max (SNO)
select * from TableName where exist ( select * from TableName where Condition = 'True' and Sno = ( select max(Sno) from TableName ) )
Je pense que vous recherchez que vous recherchez:
WHERE Condition IS TRUE AND ...
Avec cela, je n'obtiens qu'un seul disque. Je cherche tous les enregistrements dans lesquels le dernier enregistrement est vrai (c'est-à-dire = vrai)
Par exemple, si je sélectionne * Tablename, les résultats renvoient SNO (1,2,3,4,5,6), Nom (Prasan, Prasan, Prasan, Joakim, Joakim, Joakim) et Etat (vrai, vrai, faux, vrai , Vrai, vrai), je m'attends aux résultats ayant 6, Joakim, True (comme le dernier enregistrement est vrai ici), la colonne de condition n'est pas booléenne
Je n'obtiens qu'un seul disque, mais dans ma table, j'ai plusieurs enregistrements qui ont une valeur de colonne de condition comme vrai pour Max SNO (dernier enregistrement)
Ok, alors la question n'est pas claire pour moi. Si vous souhaitez obtenir des réponses de qualité, fournissez des questions détaillées: je vous suggère de modifier votre question initiale à fournir un ensemble d'échantillons de données incluant la situation que vous mentionnez et les résultats attendus.
Le commentaire de Izem ci-dessus Qui est les résultats exacts que je recherche, serait-il possible de l'obtenir en utilisant des requêtes plus simples (sans utiliser Join)
Je pense que c'est ce que vous recherchez.
Si la table est comme ceci:
[Il est recommandé d'utiliser Vous pouvez utiliser cette requête: P> tinyint (1) code> comme booléen dans mysql.] p> SELECT a.*
FROM `TableName` a
LEFT JOIN `TableName` b ON(a.`Sno` < b.`Sno`
AND a.`Name` = b.`Name`)
WHERE a.`Conditon` = 1
AND b.`Sno` IS NULL
Oui, c'est le résultat exact dont je m'attends, mais pourrions-nous faire avec des requêtes plus simples, je veux dire sans utiliser la condition de jointure?
@Prasanshetty de cette façon fonctionnera plus efficace que d'utiliser une sous-requête interne. Surtout dans les grandes tables.
Cette requête m'a aidé à obtenir les résultats requis. Merci!
SELECT *
FROM tablename
WHERE sno IN (SELECT Sno(max)
FROM tablename
GROUP BY NAME)
AND condition = 'true'
Que voulez-vous dire avec "Dernier record", je ne vois pas une commande par? Et qu'est-ce que
sno (max) code> dans la liste Sélectionner?Veuillez ajouter des exemples de données et des résultats attendus.
Quelle version mysql utilisez-vous?
Quelques lignes de données d'échantillon et le résultat attendu contribueront grandement à comprendre à quoi avez-vous besoin exactement.
Dernier signification, dans mon exemple, si je sélectionne * Nom du nom, les résultats renvoient SNO (1,2,3,4,5,6), nom (Prasan, Prasan, Prasan, Joakim, Joakim, Joakim) et la condition (vraie, Vrai, faux, vrai, vrai, vrai), alors je m'attends à des résultats ayant 6, Joakim, True (comme le dernier enregistrement est vrai ici)