MySQL选择如果表存在

时间:2013-09-11 10:37:21

标签: mysql case information-schema

我需要在表上运行计数查询,但只有该表存在时才

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中是否可行?

1 个答案:

答案 0 :(得分: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,如果没有这样的表,并且如果存在这样的表,它将返回计数,如果你把它带入函数可能会更好。