SELECT IF((
SELECT COUNT(TABLE_NAME)
FROM information_schema.tables
WHERE TABLE_SCHEMA='database0' AND TABLE_NAME='table'
) >0 , (
SELECT id
FROM database1.table
WHERE id NOT IN (SELECT id FROM database0.table)
), NULL) AS pk_value;
Die Tabelle database0.table
ist möglicherweise nicht vorhanden; Wenn die Tabelle nicht existiert, möchte ich die true
-Klausel der IF
-Anweisung überspringen. Auch wenn die IF
-Anweisung NULL
zurückgeben sollte, bekomme ich den Fehler, dass database0.table
nicht existiert. Was kann ich tun, damit die Abfrage NULL
zurückgibt, anstatt einen Fehler zu werfen, wenn die Tabelle nicht existiert?MySQL-Prüftabelle existiert mit IF-Funktion
Die Abfrage als Ganzes kompiliert wird, bedeutet dies, das 'IF 'Funktion verhält sich nicht wie eine 'IF'-Anweisung in einer prozeduralen Sprache. Wenn die Tabelle nicht vorhanden ist, wird die Abfrage nicht erfolgreich kompiliert, egal was die IF-Funktion tut. –