2016-07-19 9 views
0

was im a simple versuchen zu tun ist, wenn die Bedingung innerhalb eines MySQL Befehlstext, zum Beispiel:MySQL Query IF mit mehreren Anweisungen

SET @var1=(SELECT ID 
      FROM table_a 
      WHERE [email protected]_Parameter 
      ORDER BY ID ASC LIMIT 1); 

IF @var1 IS NOT NULL THEN 
BEGIN 
    DELETE FROM table_b 
    WHERE [email protected]; 

    UPDATE table_c 
    SET [email protected] 
    WHERE [email protected]_Parameter; 
END IF; 

Offensichtlich dieses gerade nicht funktioniert, es beschwert sich, dass ich einen sintax Fehler haben innen meine Abfrage, kann ich google suchen und fand keine Möglichkeit, IF in diesem speziellen Fall zu verwenden, jede Hilfe geschätzt.

Mit besten Grüßen, Eugen

+0

MySQL erlaubt nur die "IF" -Klausel in Codeblöcken - gespeicherte Prozeduren, Funktionen und Trigger. –

+0

Wenn Sie es auf 'C#' lösen möchten, müssen Sie wahrscheinlich ein 'Datenbank mit C# -Tutorial 'überprüfen. Für MySQL schreibe eine Speicherprozedur. –

+0

Also, was ihr sagt, gibt es keine Möglichkeit, dies im Commandtext zu tun? Ich möchte nicht eine gespeicherte Prozedur oder Funktion oder einen Trigger erstellen, es ist nicht der richtige Ort, wo dieser Code in meinem Fall gehen sollte. –

Antwort

0

Ich glaube nicht, Sie IF überhaupt benötigen. In Ihrer delete-Anweisung, wenn @var1 null ist es ausgewertet:

DELETE FROM table_b 
WHERE ID = NULL 

Welche alle Datensätze nicht löschen wird (null = null ist nicht true). Sie können immer hinzufügen:

AND @var1 IS NOT NULL;

die in diesem Fall, in anderen Fällen nicht erforderlich ist, es erforderlich ist, wie in der Update-Anweisung unten. Es fügt der Funktion des Codes eine Klarstellung hinzu, daher kann es gut sein, sie trotzdem hinzuzufügen.

UPDATE table_c 
SET [email protected] 
WHERE [email protected]_Parameter 
    AND @var1 IS NOT NULL; 

Mit dieser Änderung, die Sie die if und die Funktionalität, die Sie anfordern bekommen entfernen:

Sie können Ihre Aktualisierungsabfrage ändern.

+0

wird es einige Zeilen löschen, da es einige Zeilen ohne ID-Referenz gibt, die vom Programm als Vorlagenzeilen und nicht als tatsächliche Datenzeilen verarbeitet werden. Also ist dieser Weg wirklich ein Nein für mich gehen Ich brauche wirklich etwas wie IF in meinem Fall –

+0

Sie können hinzufügen 'und @ var1 ist nicht null' zu der 'where' Klausel. Es wird jedoch nicht notwendig sein. Wenn ein Wert 'null' ist, wird '' null '' immer noch zu 'false' ausgewertet, der korrekte Weg, um nach 'null' zu suchen, ist 'IS NULL'. Der gleiche Operator '=' funktioniert nicht so mit 'null' – HoneyBadger

+0

Bitte posten Sie Ihren Kommentar als Lösung, so kann ich es als Answear auswählen, ich hatte gehofft, es gäbe WENN in einer Anweisung, aber es gibt nicht und die Bedingung" und @ var1 ist nicht null "eingefügt in alle Unterbefehle ist die einzige praktikable Option. –