Heim  >  Artikel  >  Datenbank  >  Ausführliche Erklärung des MySQL-Beispiels: So finden Sie die neueste Datenzeile, die die Bedingungen erfüllt

Ausführliche Erklärung des MySQL-Beispiels: So finden Sie die neueste Datenzeile, die die Bedingungen erfüllt

WBOY
WBOYnach vorne
2022-07-08 14:59:492011Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL. Er organisiert hauptsächlich verwandte Themen, wie Sie die neuesten Datenzeilen finden, die die Bedingungen erfüllen Beim Begriff „Neueste“ wird oft gesagt, dass es sich um eine chronologische Reihenfolge handelt, und „Neueste“ bedeutet „Neueste“. Ich hoffe, dass es für alle hilfreich ist.

Ausführliche Erklärung des MySQL-Beispiels: So finden Sie die neueste Datenzeile, die die Bedingungen erfüllt

Empfohlenes Lernen: MySQL-Video-Tutorial

Im täglichen Geschäft müssen Sie häufig die neuesten Daten überprüfen.

Was das Konzept „Neueste“ betrifft, sprechen wir bei Produkten oft von chronologischer Reihenfolge, und „Neueste“ bedeutet „das Neueste“.

Kombiniertes Beispiel:

Dies ist ein Erfassungsblatt zur Erfassung der Besuche von Personen.
Die Daten in der Datentabelle erfassen genau die Hutfarbe, die Uhrzeit und den Personencode (für jede Person eindeutig), den jede Person bei ihrem Besuch trägt.

Datenbeispiel:

Was getan werden muss, ist:

Erstellen Sie den neuesten Besuchsdatensatz, der die Bedingungen erfüllt.

Was würdest du am besten können?

Nehmen Sie zunächst den letzten Besuchsdatensatz des Personencodes A101 heraus.

Zeigen Sie zunächst das falsche SQL-Beispiel: die Verwendung der Funktion max() als selbstverständlich.


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

Abfrageergebnisse (falsche Ergebnisse):


Offensichtlich sind die Daten bei a zu sehen Blick Es sieht aus wie etwas, ist aber tatsächlich falsch.

Warum ist das falsch? Du kannst mir ein wenig erzählen, da sich einige Leute für den Kommentarbereich interessieren (Brüder können gerne ihre eigene Meinung äußern).

Eine kurze Beschreibung: Unser Fehlerbeispiel wird nicht mit „group by“ verwendet. Tatsächlich können wir es derzeit nur mit MySQL ausführen, und viele Datenbanken melden Fehler direkt.

Dann wird die Ausführung ausgeführt. Tatsächlich entspricht MySQL zu diesem Zeitpunkt der Behandlung der gesamten Tabelle als Inhaltsblock, um einen komprimierten Abruf durchzuführen.

Wir haben die Where-Bedingung user_code='A101' hinzugefügt, sodass der gesamte Inhaltsblock andere Daten herausfiltert, die nicht user_code='A101' sind.

Mit anderen Worten: Bei dieser laxen Ausführung garantiert MySQL, dass max den Maximalwert (der relevanten Spalte) zurückgibt, für andere Spaltenfelder ist dies jedoch nicht garantiert.

Die korrekten Daten sind:

Ist max(id) unbrauchbar?

Richtige Verwendung (verwenden Sie den maximalen ID-Wert, der die Bedingungen erfüllt, als Bedingung):

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 ' )

Abfrageergebnisse:

Aber angesichts der Art und Weise, wie die Unterabfrage oben verwendet wird,

müssen mich alle insgeheim beschimpft haben. Ist es so mühsam, die neuesten Daten zu erhalten?

Gibt es etwas Einfacheres?

Ja.

Zum Beispiel haben wir festgestellt, dass die ID automatisch inkrementiert wird und die Daten mit der größten ID (Daten, die die Bedingungen erfüllen) die neuesten sind.

Dann können wir DESC in umgekehrter Reihenfolge verwenden, um die neuesten Daten zu erhalten:

DESC ist umgekehrte Reihenfolge/absteigende Reihenfolge.

PS


Oder nach Zeit Umgekehrte Reihenfolge:

SELECT *

FROM vist_record
WHERE user_code='A101'

ORDER BY create_time DESC
LIMIT 1;


Abfrageergebnisse:

I So einfach ist das umsetzen?

Was wäre, wenn wir nicht A101, sondern die aktuellen Daten aller Beteiligten angeben müssten?

Das heißt, das Konzept mehrerer Gruppen.

Die neuesten Qualifikationsdaten für jede Kategorie

Die orangefarbenen Kästchen sind die neuesten Datensätze von A101, B202 und C303, die wir herausnehmen möchten.

Falsches Beispiel:

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

Falsches Filterergebnis:

Richtig Kodierung:

AUSWÄHLEN 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
)

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des MySQL-Beispiels: So finden Sie die neueste Datenzeile, die die Bedingungen erfüllt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen