Heim >Datenbank >MySQL-Tutorial >Wie kann ich Standardwerte zurückgeben, wenn einzeilige SQL-Abfragen fehlschlagen?

Wie kann ich Standardwerte zurückgeben, wenn einzeilige SQL-Abfragen fehlschlagen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 03:31:28942Durchsuche

How to Return Default Values When Single Row SQL Queries Fail?

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:

<code class="sql">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</code>

Wenn keine passende Zeile vorhanden ist gefunden, 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:

<code class="sql">SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...</code>
<code class="sql">SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...</code>

Diese Versuche führen jedoch immer noch zu einem leeren Ergebnis, wenn keine Zeile gefunden wird Zeilen gefunden werden. Um dieses Problem zu lösen, besteht eine effektivere Technik darin, eine Aggregatfunktion wie MIN zusammen mit IFNULL zu verwenden:

<code class="sql">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</code>

Durch die Verwendung der Aggregatfunktion MIN stellen Sie sicher, dass Sie ein NULL-Ergebnis erhalten, wenn keine Datensätze vorhanden sind ausgewählt sind. Dieser NULL-Wert wird dann durch den von IFNULL bereitgestellten Standardwert ersetzt.

Das obige ist der detaillierte Inhalt vonWie kann ich Standardwerte zurückgeben, wenn einzeilige SQL-Abfragen fehlschlagen?. 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