sql >> Databáze >  >> RDS >> Mysql

MySQL - Ignorovat dotaz, pokud tabulka neexistuje

Musím souhlasit s tím, že váš požadavek se zdá být docela zvláštní. Každopádně váš dotaz nefunguje, protože MySQL (a vsadím se, že i všechny ostatní DBMS) nejprve dotaz vyhodnotí, aby zkontroloval syntaktické chyby a tak dále...a existující tabulky.

Buď provedete tyto vícenásobné dotazy v kódu aplikace, nebo vytvoříte uloženou proceduru pro získání dat pomocí připravených příkazů. Kód pro to bude vypadat nějak takto:

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 ;

Po vytvoření byste postup provedli pomocí

CALL get_my_data();



  1. Poznámky k indexům PostgreSQL B-stromu

  2. INSERT MySQL – Vyžadují názvy polí oddělování zadního zaškrtávacího/přízvuku?

  3. Odstraňte duplicitní záznamy z tabulky bez pk nebo id nebo jedinečných sloupců v mysql

  4. Laravel 5.2 - Vlevo Join DB::Raw nefunguje?