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

MySQL - Ignorer forespørgsel, hvis tabel ikke eksisterer

Jeg må være enig i, at dit krav virker ret underligt. Under alle omstændigheder virker din forespørgsel ikke, fordi MySQL (og jeg vil vædde på alle andre DBMS også) evaluerer først forespørgslen for at tjekke for syntaksfejl og så videre...og for eksisterende tabeller.

Enten laver du bare disse flere forespørgsler i din ansøgningskode, eller også opretter du en lagret procedure for at få dataene ved hjælp af forberedte udsagn. Koden til dette ville se nogenlunde sådan ud:

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 ;

Når du først er oprettet, vil du derefter udføre proceduren med

CALL get_my_data();



  1. hvordan man arbejder med rekursiv forespørgsel i MySql?

  2. Magento Install - Identifikatornavnet er for langt

  3. Sådan implementeres synkroniseret Memcached med database

  4. MySQL SELECT LAST_INSERT_ID() for sammensat nøgle. Er det muligt?