私はあなたの要件がかなり奇妙に見えることに同意しなければなりません。とにかく、MySQL(そして他のすべてのDBMSもそうだと思います)が最初にクエリを評価して構文エラーなどをチェックし、既存のテーブルをチェックするため、クエリは機能しません。
アプリケーションコードでこの複数のクエリを実行するか、プリペアドステートメントを使用してデータを取得するストアドプロシージャを作成します。このためのコードは次のようになります:
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 ;
作成したら、
を使用して手順を実行します。CALL get_my_data();