Wenn ich diese Aussage verwenden;SQL Case-When-Else-Anweisung Effizienz
UPDATE TABLE
SET FIELD = CASE
WHEN NAME = 'a' THEN (SELECT NO FROM TABLE_TWO WHERE NAME = 'a')
ELSE 'x' END
WHERE FIELD_TWO = 1
wenn TABLE.NAME != 'a'
wird die Auswahl SQL trotzdem ausgeführt? Darüber hinaus, eine kleine zusätzliche Frage, denken Sie, es ist richtig, solche Logik in SQL-Code für ein bestimmtes Produkt zu haben? Ich denke, jede Logik in SQL macht seine Berichterstattung sehr schwierig und schwer zu pflegen, was denkst du?
edit: select-Anweisung gibt nur einen einzelnen Wert zurück, ignoriert den Fall, in dem mehrere Werte zurückgegeben werden können, dieser Fall gehört nicht in den Bereich dieser Frage.
Welche DBMS verwenden Sie? Im Allgemeinen: CASE-Anweisungen werden nicht "abgekürzt", daher ist es sehr wahrscheinlich, dass die verschachtelte Auswahl für jede durch die 'where'-Klausel ausgewählte Zeile ausgeführt wird. Aber es hängt davon ab, dass das DBMS verwendet wird. –
Derzeit verwende ich Oracle 12g –