Standardwerte zurückgeben, wenn einzelne Zeilenabfragen fehlschlagen
Bei der Durchführung von SQL-Abfragen zum Abrufen bestimmter Daten kommt es häufig zu Situationen, in denen keine entsprechende Zeile vorhanden ist existiert. Um zu vermeiden, dass leere Ergebnisse zurückgegeben werden, möchten Sie möglicherweise einen Standardwert angeben.
Betrachten Sie die folgende SQL-Anweisung, die das nächste geplante Element für einen Stream abruft:
SELECT `file`
FROM `show`, `schedule`
WHERE `channel` = 1
AND `start_time` <= UNIX_TIMESTAMP()
AND `start_time` > UNIX_TIMESTAMP()-1800
AND `show`.`id` = `schedule`.`file`
ORDER BY `start_time`
DESC LIMIT 1
Wenn keine passende Zeile gefunden wird, gibt diese Abfrage ein leeres Ergebnis zurück. Um jedoch sicherzustellen, dass etwas im Stream abgespielt wird, wenn keine geplanten Elemente vorhanden sind, können Sie stattdessen einen Standardwert zurückgeben.
Ein Ansatz, dies zu erreichen, ist die Verwendung der Funktion IFNULL oder COALESCE. Indem Sie die ursprüngliche Abfrage in diese Funktionen einbinden, können Sie einen Standardwert angeben, der zurückgegeben wird, wenn keine Zeile gefunden wird:
SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...
SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...
Diese Versuche führen jedoch immer noch zu einem leeren Ergebnis, wenn keine Zeilen gefunden werden. Um dieses Problem zu beheben, besteht eine effektivere Technik darin, eine Aggregatfunktion wie MIN zusammen mit IFNULL:
SELECT IFNULL(MIN(`file`), 'default.webm') `file`
FROM `show`, `schedule`
WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP()
AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file`
ORDER BY `start_time` DESC LIMIT 1
Durch die Verwendung der Aggregatfunktion MIN stellen Sie sicher, dass Sie ein NULL-Ergebnis erhalten, wenn keine Datensätze ausgewählt werden. Dieser NULL-Wert wird dann durch den von IFNULL bereitgestellten Standardwert ersetzt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3