Verwenden von IN-Abfragen zum Abrufen von Datensätzen mit Standardwerten für fehlende Daten
Beim Abfragen der Online-Aktivität von Benutzern innerhalb eines bestimmten Datumsbereichs mithilfe einer IN
-Klausel kann es zu Situationen kommen, in denen für einige Benutzer-IDs in der Bedingung IN
entsprechende Einträge in der Tabelle OnlineUsage
fehlen. Um dies zu handhaben und Standardwerte für fehlende Daten zurückzugeben, ist eine geänderte Abfragestruktur erforderlich.
Eine Standardabfrage gibt möglicherweise nur Ergebnisse für IDs mit übereinstimmenden Datensätzen zurück. Um alle IDs aus Ihrer IN
-Liste einzubeziehen, auch diejenigen ohne übereinstimmende Online-Nutzungsdaten, strukturieren Sie die Abfrage neu, um ein LEFT JOIN
(oder ein Äquivalent) zu nutzen. Der Schlüssel besteht darin, die Datumsbereichsbedingung von der WHERE
-Klausel in die JOIN
-Bedingung zu verschieben.
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(OnlineUsage.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUsage ON users.ID = OnlineUsage.ID AND OnlineUsage.Date >= '2016-01-01 00:00:00' AND OnlineUsage.Date < '2017-01-01 00:00:00' WHERE users.ID IN (1, 2, 3, 4, 5) -- Your list of IDs here GROUP BY users.ID;</code>
Diese überarbeitete Abfrage verwendet ein LEFT JOIN
, um sicherzustellen, dass alle Benutzer einbezogen werden. Die Funktion IFNULL
behandelt Fälle, in denen SUM(OnlineUsage.Minutes)
NULL
zurückgibt (für Benutzer ohne Online-Nutzungsdaten), indem sie ein 0
ersetzt. Die GROUP BY
-Klausel ist entscheidend für die korrekte Aggregation von MinutesOnline
für jeden Benutzer. Dieser Ansatz garantiert einen vollständigen Datensatz und bietet eine konsistente Darstellung aller Benutzer innerhalb des angegebenen Zeitrahmens, unabhängig davon, ob sie über Online-Nutzungsaufzeichnungen verfügen.
Das obige ist der detaillierte Inhalt vonWie rufe ich Datensätze mit Standardwerten mithilfe von IN-Abfragen für fehlende Daten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!