Standardwert für IN-Abfragewert abrufen
Angenommen, Sie haben eine Abfrage, die eine IN-Abfrage verwendet, um Daten für Benutzer abzurufen, die innerhalb eines bestimmten Datumsbereichs online waren. Sie möchten jedoch einen Standardwert in die IN-Bedingung für Benutzer-IDs aufnehmen, die nicht mit der Datumsbereichsbedingung übereinstimmen.
Frage
Die vereinfachte Abfrage unten verwendet einen Left-Join, um die Online-Nutzung mit Benutzer-IDs abzugleichen. Es werden jedoch nur Datensätze zurückgegeben, die den Datumsbereichskriterien entsprechen.
<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline FROM UserTable LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00';</code>
Lösung
Um einen Standardwert einzuschließen, platzieren Sie die Datumsbereichsbedingung in der FROM-Klausel:
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(users.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUseage ON OnlineUseage.ID = users.ID and OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00';</code>
Dadurch wird sichergestellt, dass alle Benutzer-IDs in der Abruf-IN-Bedingung enthalten sind, unabhängig davon, ob sie mit der Datumsbereichsbedingung übereinstimmen. IFNULL wird verwendet, um Benutzern ohne Online-Nutzungsdaten einen Standardwert von 0 bereitzustellen.
Das obige ist der detaillierte Inhalt vonWie füge ich Standardwerte in eine IN-Abfrage für fehlende Datumsbereichsdaten ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!