2016-09-21 6 views
1

Ich bin neu in MySQL und PHP und habe mich nur gefragt, ob dies MySQL-Abfrage gültig waren:Sind ELSE IF-Anweisungen möglich? Hallo

IF (NOT EXISTS(SELECT uid2 FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid2 = $var 
END 
ELSE 
IF (NOT EXISTS(SELECT uid3 FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid3 = $var 
END 

Ich versuche, $ var in meine Tabelle einzufügen, aber nur, wenn es keinen Wert für UID2 und uid3 . Hoffentlich macht Sinn, ich habe viel von unten Stimmen bekommen und weiß nicht, warum:/

+0

Aktualisieren Sie Ihre Frage mit einigen tatsächlichen Daten und gewünschten Ausgang für bessere Ergebnisse. –

+0

Der Code ist nicht php –

+0

Fragen Sie, dass ELSE IF Bedingungen in MySQL verwendet werden, ist es Sie Frage? –

Antwort

2

Ich glaube, Sie dies zu einer einzigen Abfrage zu reduzieren, ohne IF:

UPDATE table 
SET uid2 = $var, 
    uid3 = $var 
WHERE NOT EXISTS (SELECT * FROM table WHERE uid1 = '$uid1') 

Ihre zwei NOT EXISTS Die Bedingungen sind logischerweise die gleichen wie ich weiß.

+0

Nein, sind sie nicht. Es gibt zwei Spalten, uid2 und uid3. Ich möchte in die uid2 einfügen, wenn es nicht bereits einen Wert oder uid3 gibt, wenn es eine in uid2 gibt – Jimbu

+0

@Jimbu Ich denke, Sie könnten verwirrt sein, wie 'EXSTS' funktioniert. Es würde true zurückgeben, wenn eine _record_ (keine Spalte innerhalb eines Datensatzes) existiert 'WHERE uid = '$ uid1''. Daher sollte die Spalte, die Sie in der EXISTS-Klausel auswählen, keine Rolle spielen. –

0

Wenn wir EXISTS oder NOT EXISTS-Anweisungen in mysql verwenden, beginnt die Unterabfrage immer mit der Anweisung select * wie folgt.

NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1') 

Versuchen Sie es.

IF (NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid2 = $var 
END 
ELSE 
IF (NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid3 = $var 
END