Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - Ignoruj ​​zapytanie, jeśli tabela nie istnieje

Muszę się zgodzić, że twoje żądanie wydaje się dość dziwne. W każdym razie twoje zapytanie nie działa, ponieważ MySQL (i założę się, że wszystkie inne DBMS) najpierw ocenia zapytanie, aby sprawdzić błędy składni i tak dalej ... i dla istniejących tabel.

Albo po prostu tworzysz wiele zapytań w kodzie aplikacji, albo tworzysz procedurę składowaną, aby uzyskać dane za pomocą przygotowanych instrukcji. Kod do tego wyglądałby mniej więcej tak:

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 utworzeniu możesz wykonać procedurę za pomocą

CALL get_my_data();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sortuj określone wartości do góry

  2. Używanie wyzwalaczy MySQL do rejestrowania wszystkich zmian w tabeli w tabeli dodatkowej

  3. Niepodstawowe klucze obce w Django

  4. AWS MySQL RDS kontra AWS DynamoDB

  5. nie można połączyć się z instancją AWS VPC RDS (mysql lub postgres)