Maison  >  Questions et réponses  >  le corps du texte

MariaDB : problèmes liés à la suppression SQL à l'aide de la clause exist

<p>J'ai exécuté cette sélection dans MariaDB et cela a fonctionné comme prévu, c'était juste une sélection avec <code>exists</code>: </p> <pre class="brush:php;toolbar:false;">select * from pred_loan_defaults d où existe (sélectionnez 1 dans pred_loan_defaults d2 où d.exec_id = d2.exec_id et d.loan_identifier = d2.loan_identifier et d2.default_status = 1 et d.prediction_date > trier par identificateur_prêt, date_prédiction</pre> <p>Maintenant, j'essaie de supprimer les lignes sélectionnées, j'ai donc adapté l'instruction : </p> <pre class="brush:php;toolbar:false;">supprimer de pred_loan_defaults d où existe (sélectionnez * dans pred_loan_defaults d2 où d.exec_id = d2.exec_id et d.loan_identifier = d2.loan_identifier et d2.default_status = 1 et d.prediction_date > d2.prediction_date);</pre> <p>Mais j'obtiens une erreur :</p> <blockquote> <p>Erreur SQL [1064] [42000] : (conn=6) Il y a une erreur dans votre SQL Syntaxe ; consultez le manuel de votre serveur MariaDB Version utilisant la syntaxe correcte proche de 'd</p> </blockquote> <p><code>delete</code> Quel est le problème avec l'instruction ? </p>
P粉811329034P粉811329034416 Il y a quelques jours409

répondre à tous(1)je répondrai

  • P粉752812853

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

    Lors de la suppression d'une seule table, les alias ne peuvent pas être utilisés après le nom de la table.

    Vous devez utiliser 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

    répondre
    0
  • Annulerrépondre