Heim >Datenbank >MySQL-Tutorial >Wie füge ich Standardwerte in eine IN-Abfrage für fehlende Datumsbereichsdaten ein?

Wie füge ich Standardwerte in eine IN-Abfrage für fehlende Datumsbereichsdaten ein?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-17 06:26:09546Durchsuche

How to Include Default Values in an IN Query for Missing Date Range Data?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn