sql >> データベース >  >> RDS >> Mysql

MySQL-テーブルが存在しない場合はクエリを無視します

    私はあなたの要件がかなり奇妙に見えることに同意しなければなりません。とにかく、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();
    



    1. MySQLルートユーザーを使用してMySQLにアクセスする方法

    2. ネストされたオブジェクトに対するPostgresjsonbクエリ

    3. PHP/Mysqlの特殊文字の挿入が切り捨てられています

    4. MySQLで開いているトランザクションを表示する