我需要在表上运行计数查询,但只有该表存在时才
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中是否可行?
答案 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,如果没有这样的表,并且如果存在这样的表,它将返回计数,如果你把它带入函数可能会更好。