Mysql
 sql >> база данни >  >> RDS >> Mysql

Изпълнете mysql insert само ако таблицата е празна

Имате синтактична грешка във вашето изявление:

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

Трябва да повторите where два пъти в този случай, веднъж за всяка подзаявка. Можете също да направите:

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

В тази версия трябва да присвоите имена на колоните.

Или можете просто да използвате два отделни оператора за вмъкване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да зададете дължина на типа дата на mysql с sequelize-cli

  2. phpMyAdmin на MySQL 8.0

  3. Google Cloud SQL със SSL от Compute Engine и/или външна мрежа

  4. MySQL RAND() колко често може да се използва? използва ли /dev/random?

  5. Различните бази данни използват ли различни цитати на имена?