Heim  >  Fragen und Antworten  >  Hauptteil

MariaDB: Probleme beim SQL-Löschen mithilfe der Exist-Klausel

<p>Ich habe diese Auswahl in MariaDB ausgeführt und sie hat wie erwartet funktioniert, es war nur eine Auswahl mit <code>exists</code>: </p> <pre class="brush:php;toolbar:false;">select * from pred_loan_defaults d wo existiert (wählen Sie 1 aus pred_loan_defaults d2 wobei d.exec_id = d2.exec_id und d.loan_identifier = d2.loan_identifier und d2.default_status = 1 und d.prediction_date > Sortieren nach Kreditkennung, Vorhersagedatum</pre> <p>Jetzt versuche ich, die ausgewählten Zeilen zu löschen, also habe ich die Anweisung angepasst: </p> <pre class="brush:php;toolbar:false;">löschen aus pred_loan_defaults d wo existiert (wählen Sie * aus pred_loan_defaults d2 wobei d.exec_id = d2.exec_id und d.loan_identifier = d2.loan_identifier und d2.default_status = 1 und d.prediction_date > d2.prediction_date);</pre> <p>Aber ich erhalte eine Fehlermeldung:</p> <blockquote> <p>SQL-Fehler [1064] [42000]: (conn=6) Es liegt ein Fehler in Ihrem SQL vor Syntax; schauen Sie im Handbuch Ihres MariaDB-Servers nach Version mit korrekter Syntax in der Nähe von „d</p>“ </blockquote> <p><code>delete</code> Was stimmt mit der Aussage nicht? </p>
P粉811329034P粉811329034417 Tage vor412

Antworte allen(1)Ich werde antworten

  • P粉752812853

    P粉7528128532023-08-31 19:43:19

    单表删除时表名后不能使用别名。

    您需要使用JOIN而不是WHERE EXISTS

    delete d
    FROM pred_loan_defaults AS d
    JOIN prod_loan_defaults AS d2
        ON d.exec_id = d2.exec_id 
            AND d.loan_identifier = d2.loan_identifier 
            AND d.prediction_date > d2.prediction_date
    WHERE d2.default_status = 1

    Antwort
    0
  • StornierenAntwort