Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Führen Sie mysql insert nur aus, wenn die Tabelle leer ist

Sie haben einen Syntaxfehler in Ihrer Anweisung:

INSERT INTO `statuses`
    (SELECT  'Something', 'Something else', 123
     WHERE NOT EXISTS (SELECT * FROM `statuses`)
    ) union all
    (SELECT 'Something', 'Something else', 234
     WHERE NOT EXISTS (SELECT * FROM `statuses`)
    );

Sie müssen das where wiederholen in diesem Fall zweimal, einmal für jede Unterabfrage. Sie können auch Folgendes tun:

INSERT INTO `statuses`
    select t.*
    from ((SELECT  'Something' as col1, 'Something else' as col2, 123 as col3
          ) union all
          (SELECT 'Something', 'Something else', 234
          )
         ) t
    WHERE NOT EXISTS (SELECT * FROM `statuses`);

In dieser Version müssen Sie den Spalten Namen zuweisen.

Oder Sie könnten einfach zwei separate Insert-Anweisungen verwenden.