sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Ignorera fråga om tabell inte finns

Jag måste hålla med om att ditt krav verkar ganska konstigt. Hur som helst, din fråga fungerar inte, eftersom MySQL (och jag slår vad om alla andra DBMS också) först utvärderar frågan för att kontrollera efter syntaxfel och så vidare...och för befintliga tabeller.

Antingen gör du bara dessa flera frågor i din applikationskod eller så skapar du en lagrad procedur för att hämta data med hjälp av förberedda uttalanden. Koden för detta skulle se ut ungefär så här:

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 har skapat den skulle du sedan utföra proceduren med

CALL get_my_data();



  1. Använder GO inom en transaktion

  2. Få den senaste informationen från två tabeller för att jämföra datum och tid

  3. Returnera N kolumner från en tabellfunktion

  4. Linq to Entities Group By (OUTTER APPLY) oracle 11.2.0.3.0 stöder inte applicera