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

MySQL - Игнориране на заявката, ако таблицата не съществува

Трябва да се съглася, че вашето изискване изглежда доста странно. Както и да е, вашата заявка не работи, защото MySQL (и се обзалагам, че всички други СУБД също) първо оценява заявката, за да провери за синтактични грешки и така нататък...и за съществуващи таблици.

Или просто правите тези множество заявки в кода на приложението си, или създавате съхранена процедура, за да получите данните, като използвате подготвени изрази. Кодът за това ще изглежда така:

DELIMITER $$
CREATE PROCEDURE get_my_data()
BEGIN
SET @table_name = '';
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE SCHEMA_NAME = 'your_db_name' 
           AND TABLE_NAME = 'your_table_name')
THEN SET @table_name = 'tableA';
ELSE SET @table_name = 'tableB';
END IF;

SET @sql = CONCAT('SELECT COUNT(*) FROM ', @table_name, ';');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END $$
DELIMITER ;

Веднъж създаден, ще изпълните процедурата с

CALL get_my_data();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Повторете ред с резултати няколко пъти и номерирайте редовете

  2. как да получа стойност от mysql таблица, подредена от друга таблица?

  3. Как мога да предам масив от стойности на моята съхранена процедура?

  4. Предимство в производителността на MySQL Enum?

  5. Как да създадете MySQL база данни с помощта на cPanel API