sql >> Database >  >> RDS >> Mysql

MySQL - Query negeren als tabel niet bestaat

Ik moet het ermee eens zijn dat uw eis nogal vreemd lijkt. Hoe dan ook, je query werkt niet, omdat MySQL (en ik wed dat ook alle andere DBMS) eerst de query evalueert om te controleren op syntaxisfouten enzovoort... en op bestaande tabellen.

Of u maakt gewoon meerdere query's in uw toepassingscode of u maakt een opgeslagen procedure om de gegevens te krijgen met behulp van voorbereide instructies. De code hiervoor ziet er ongeveer zo uit:

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 ;

Eenmaal gemaakt, voer je de procedure uit met

CALL get_my_data();



  1. MYSQL complexe Unie

  2. Rails selecteren willekeurig record

  3. oracle hoe de tabel te wijzigen partitie toevoegen per bereikinterval

  4. Unicode opsommingsteken verwijderen