Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - Ignore a consulta se a tabela não existir


Devo concordar que sua exigência parece bastante estranha. De qualquer forma, sua consulta não funciona, porque o MySQL (e aposto todos os outros DBMS também) primeiro avalia a consulta para verificar erros de sintaxe e assim por diante... e tabelas existentes.

Ou você apenas faz várias consultas no código do aplicativo ou cria um procedimento armazenado para obter os dados usando instruções preparadas. O código para isso seria algo assim:
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 ;

Uma vez criado, você executaria o procedimento com
CALL get_my_data();