gpt4 book ai didi

php - MySQL 如果表存在则选择行数

转载 作者:行者123 更新时间:2023-11-29 03:47:53 24 4
gpt4 key购买 nike

我正在尝试从表中获取行数,但前提是它存在。 (在一个 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 部分返回正确的值(如果表不存在则返回 0,如果存在则返回 1)。真正的问题是,当表格不存在时,整个 SQL 并没有返回/选择“0”,而是返回了一个错误。 (因为在 THEN 子句中提到了不存在的表,从而破坏了之前检查它是否存在的整个目的。换句话说,它不能忽略 COUNT-当表不存在时 THEN 子句中的语句。)

这是一个问题,因为我希望返回值是一个整数(或数值)。

最佳答案

我环顾四周,发现了这个线程。我想计算表中的行数(如果存在),或者如果表不存在则返回 -1。用您自己的值替换 [database_name][table_name]

SELECT MAX(TABLE_ROWS) AS TABLE_ROWS 
FROM information_schema.tables
WHERE TABLE_SCHEMA = '[database_name]'
AND TABLE_NAME = '[table_name]'

此查询返回一个列 TABLE_ROWS,其中包含一个唯一的行,其中包含 [table_name] 的行数(如果表存在)或 NULL(如果 [table_name] 不存在。

如果我想在表不存在时返回 -1 而不是 NULL,我使用以下查询:

SELECT IFNULL(MAX(TABLE_ROWS), -1) AS TABLE_ROWS 
FROM information_schema.tables
WHERE TABLE_SCHEMA = '[database_name]'
AND TABLE_NAME = '[table_name]'

关于php - MySQL 如果表存在则选择行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com