sql >> Databasteknik >  >> RDS >> Mysql

Kör mysql insert endast om tabellen är tom

Du har ett syntaxfel i ditt uttalande:

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`)
    );

Du måste upprepa where två gånger i det här fallet, en gång för varje underfråga. Du kan också göra:

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`);

I den här versionen måste du tilldela namn till kolumnerna.

Eller så kan du bara använda två separata infogningssatser.



  1. MySQL kumulativ produktgrupp efter

  2. Flera While-loopar inom en While-loop?

  3. psql:FATAL:roll postgres existerar inte

  4. Hur får man ut antalet totala resultat när det finns LIMIT i fråga?