Maison > base de données > tutoriel mysql > Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

PHPz
Libérer: 2023-05-27 11:31:12
avant
1635 Les gens l'ont consulté

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Exemple combiné :

Il s'agit d'une feuille d'enregistrement pour enregistrer les visites des personnes.
Les données du tableau de données enregistrent avec précision la couleur du chapeau, l'heure et le code de personne (unique pour chaque personne) que chaque personne porte lors de sa visite.
Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Échantillon de données :

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Ce qu'il faut faire est :

Proposer le dernier enregistrement de visite qui remplit les conditions.

Que feriez-vous de mieux ?

Tout d'abord, mettez en œuvre quelque chose, sortez le dernier enregistrement de visite du code personne A101.

Montrez d'abord le mauvais exemple SQL : utiliser la fonction max() pour acquis.


SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record WHERE user_code='A101' ;

Résultats de la requête (mauvais résultats) :

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Évidemment, les données peuvent être vues à un coup d'oeil Cela a l'apparence de quelque chose, mais c'est en fait faux.

Pourquoi est-ce faux ? Vous pouvez m'en dire un peu, puisque certaines personnes sont intéressées par la zone de commentaires (les frères sont invités à exprimer leurs propres opinions).

Une brève description, max est une fonction d'agrégation. Notre exemple d'erreur n'est pas utilisé avec group by. En fait, seul mysql peut nous permettre de l'exécuter pour le moment, et de nombreuses bases de données signalent directement les erreurs.

Ensuite, l'exécution est exécutée. En fait, à ce stade, MySQL équivaut à traiter la table entière comme un bloc de contenu pour effectuer une récupération compressée.

Nous avons ajouté la condition Where user_code='A101', de sorte que l'ensemble du bloc de contenu filtre les autres données qui ne sont pas user_code='A101'.

En d'autres termes, dans ce type d'exécution laxiste, mysql garantit que max renvoie la valeur maximale (de la colonne concernée), mais ce n'est pas garanti pour les autres champs de colonne.

Les données correctes sont :

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Est-ce que max(id) est inutilisable ?

Utilisation correcte (utilisez la valeur d'identifiant maximale qui remplit les conditions comme condition) :

SELECT
id,user_code,cap_color,create_time
FROM vist_record
WHERE id IN (SELECT MAX(id) AS id FROM vist_record WHERE user_code ='A101' )

Résultats de la requête :
Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Mais vu la façon d'utiliser les sous-requêtes ci-dessus,

tout le monde a dû me gronder secrètement, est-ce si difficile d'obtenir les dernières données ?

Y a-t-il quelque chose de plus simple ?

Oui.

Par exemple, nous avons déterminé que l'identifiant s'incrémente automatiquement et que les données avec l'identifiant le plus grand (données qui remplissent les conditions) sont les dernières.

Ensuite, nous pouvons utiliser l'ordre inverse DESC pour obtenir les dernières données :

DESC est l'ordre inverse/ordre décroissant.

PS


Ou selon le temps Ordre inverse : Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

SELECT *

FROM vist_record
WHERE user_code='A101'

ORDER BY create_time DESC
LIMIT 1;


Résultats de la requête :

Est c'est aussi simple que ça mettre en œuvre ? Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Et si ce dont nous avions besoin n'était pas de spécifier A101 mais les dernières données de toutes les personnes impliquées ?

Autrement dit, il existe plusieurs groupes de concepts.

Les dernières données de qualification pour chaque catégorie

Les cases orange sont les derniers records des A101, B202 et C303, que nous souhaitons supprimer.

Exemple incorrect :

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

SELECT MAX(id) AS id ,user_code,cap_color,create_time FROM vist_record GROUP BY user_code

Résultat de filtrage incorrect :

Encodage correct :

SELECT  id,user_code,cap_color,create_time FROM vist_record  WHERE id in
(
SELECT MAX(id) AS id  FROM vist_record  GROUP BY user_code
)#🎜🎜 #

Comment trouver la dernière ligne de données qui répond aux conditions dans MySql

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal