我需要在表上运行计数查询,但前提是该表存在,
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中这可能吗?
您可以尝试以下方法:
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,它将返回计数,如果您将其纳入函数可能会更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句