3

テーブルに対してカウント クエリを実行する必要がありますが、そのテーブルが存在する場合のみ、

SELECT 
CASE WHEN (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'DATABASENAME' AND TABLE_NAME = 'testtable') < 1 THEN '0' 
ELSE (SELECT COUNT(*) FROM testtable) END;

上記のクエリは、テーブルが存在しない場合は 0 を返す必要がありますが、存在する場合はカウントを取得する必要があります。

これにより、「testtable」が存在しないというエラーが返されます。information_schema カウントが 0 を返すため、存在しないことがわかります。

これは MySQL で可能ですか?

4

1 に答える 1

1

これを試すことができます:

       SET @val := CASE (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'DATABASENAME' AND TABLE_NAME = 'testtable')
           WHEN 0 THEN 0
           ELSE (SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'DATABASENAME' AND TABLE_NAME = 'testtable')

END;
        SELECT @val;

そのようなテーブルがない場合は0を返し、そのようなテーブルが存在する場合はカウントを返します。関数に取り入れた方がよいかもしれません。

于 2013-09-11T11:57:28.800 に答える