【发布时间】:2015-12-03 10:46:48
【问题描述】:
我正在尝试从表中获取行数,但前提是它存在。 (在一个 SQL 语句中。)
来自this 问题,如果存在,则答案不会从表中返回行数。如果 MySQL 不抛出错误“表不存在”,如何做到这一点??
我的SQL如下:
SELECT CASE
WHEN
( (SELECT COUNT(*) FROM `information_schema`.`tables` WHERE `table_schema` = DATABASE() AND `table_name` = 'testTbl') > 0 )
THEN
(SELECT COUNT(*) FROM `testTbl`)
ELSE
(SELECT 0)
END;
编辑:WHEN-part 返回正确的值(如果表不存在则为 0,如果存在则为 1)。
真正的问题是,当表格不存在时,整个 SQL 没有返回/选择“0”,而是返回错误。 (因为THEN子句中提到了不存在的表,从而破坏了之前检查它是否存在的整个目的。换句话说,它不能忽略COUNT-语句中的THEN-表不存在时的子句。)
这是个问题,因为我希望返回的值是整数(或数值)。
【问题讨论】:
-
@Phillip,我很想知道你最终是如何需要这样做的,它有一股淡淡的代码气味。
-
@Rob,我通常会使用 2 个单独的查询来执行此操作,但对于这种情况,我需要将它放在一个查询中。所以,这才是真正的问题哈哈
-
不管有多少查询,你为什么要这样做?
-
作为在图表中显示的预处理数据的一部分,我需要表的行数(如果不存在,则为 0)作为 PHP 执行和检索的单个查询(在 Wordpress 中) 与
get_var()通话 -
我找到了解决方案,我想:)