sql >> Database >  >> RDS >> Mysql

Voer mysql insert alleen uit als de tabel leeg is

U heeft een syntaxisfout in uw verklaring:

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

U moet de where . herhalen in dit geval twee keer, één keer voor elke subquery. Je kunt ook het volgende doen:

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 deze versie moet je namen toewijzen aan de kolommen.

Of u kunt gewoon twee afzonderlijke insert-statements gebruiken.



  1. hoe datum en tijd te vergelijken in php/mysql

  2. Veroorzaken onderstrepingstekens in de namen van een MySQL-tabel problemen?

  3. Relatiekenmerken vertalen van ER-diagram naar SQL

  4. Update zonder waar-clausule