Heim  >  Fragen und Antworten  >  Hauptteil

Wie kopiere ich eine Zeile in derselben Tabelle in MySQL nur, wenn die Zeile nicht existiert?

Ich versuche herauszufinden, wie man einen Zeilendatensatz aus derselben Tabelle kopiert (nur wenn die Zeile nicht existiert), aber die Lösungen, die ich gefunden habe, sind nur teilweise. Zum Beispiel „Datensatz kopieren“ oder „Einfügen, falls nicht vorhanden“. Also habe ich versucht, diese Antworten zusammenzuführen, um meine Antwort zu erhalten, aber ... ich glaube, ich habe gerade einen ekelhaften Code erstellt.

Schauen wir uns das an

INSERT INTO LCL
SELECT * FROM LCL WHERE (UID = 0 AND NAME = 'S_TYPE')
WHERE NOT EXISTS (SELECT * FROM LCL WHERE UID = 11 AND NAME = 'S_TYPE' LIMIT 1);

Es gibt einen Standardformatdatensatz, UID = 0。如果没有NAME = S_TYPE的记录,则复制NAME = S_TYPE AND UID = 0的记录,并将UIDgeändert in 11. Der Datensatz sollte die Daten für alle Spalten kopieren. Also habe ich versucht, SELECT * zu verwenden, bin mir aber nicht sicher, ob es richtig ist.

Ich bin mir sicher, dass ich beides vermasselt habe...WHERE

P粉729518806P粉729518806241 Tage vor383

Antworte allen(1)Ich werde antworten

  • P粉860897943

    P粉8608979432024-02-22 11:55:57

    如果您已经有 WHERE 那么后续应该是 AND。我不认为你真的需要第一个 WHERE 上的括号:

    INSERT INTO LCL
    SELECT * FROM LCL 
     WHERE UID = 0 AND NAME = 'S_TYPE'
       AND NOT EXISTS (SELECT * FROM LCL WHERE UID = 11 AND NAME = 'S_TYPE' LIMIT 1);

    Antwort
    0
  • StornierenAntwort