sql >> Database teknologi >  >> RDS >> Mysql

Udfør kun mysql insert, hvis tabellen er tom

Du har en syntaksfejl i din erklæring:

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 skal gentage where to gange i dette tilfælde, én gang for hver underforespørgsel. Du kan også gøre:

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 denne version skal du tildele navne til kolonnerne.

Eller du kan bare bruge to separate indsæt-sætninger.



  1. mysql_connect() mislykkes med tom advarsel

  2. Oracle Entity Framework - Generer enhed fra tabeller i forskellige skemaer

  3. Oracle CASE kortslutning virker ikke i gruppe af

  4. Hvad er forskellen mellem pls_integer og binary_integer?