mysql - 查询错误 'Count' 中的未知列 'field list'

标签 mysql

我正在尝试对表名称中包含 house 的所有表中的 picks 列求和。

SELECT SUM(Picks) AS A 
  FROM (SELECT TABLE_NAME 
          FROM information_schema.TABLES 
         WHERE TABLE_NAME LIKE '%house' AND 
               table_schema='myschema'
       ) AS T

此 SQL 语句产生消息

Unknown column 'Picks' in 'field list'

如果我只查询:

SELECT TABLE_NAME 
  FROM information_schema.TABLES 
 WHERE TABLE_NAME LIKE '%house' AND
       table_schema='myschema'

它返回预期的表列表。我已验证每个返回的表都有一个计数列,并且所有数据类型都相同 VARCHAR(45)

我错过了什么?

最佳答案

这是您的查询:

SELECT SUM(Picks) AS A 
FROM (SELECT TABLE_NAME 
      FROM information_schema.TABLES 
      WHERE TABLE_NAME LIKE '%house' AND 
            table_schema='myschema'
    ) AS T

您缺少的是子查询没有名为 Picks 的列。我的意思是,以下将起作用:

SELECT SUM(Picks) AS A 
FROM (SELECT TABLE_NAME, 1 as Picks
      FROM information_schema.TABLES 
      WHERE TABLE_NAME LIKE '%house' AND 
            table_schema='myschema'
    ) AS T

或者这个:

SELECT COUNT(*) as Picks
FROM (SELECT TABLE_NAME
      FROM information_schema.TABLES 
      WHERE TABLE_NAME LIKE '%house' AND 
            table_schema='myschema'
    ) AS T

但在您的查询中,Picks 未定义。因此错误。

而且,information_schema.tables 中也没有这样的列。这使我认为你很困惑。也许该列存在于“house”表中。但是,您不能那样引用表格。如果您真的想动态地将表名放入查询中,您可能需要研究准备好的语句——prepare/execute(请参阅 here)。

关于mysql - 查询错误 'Count' 中的未知列 'field list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855260/

相关文章:

MySQL Order By 不适用于 Concat(enum)

php - 使用 Zend_Db 时如何将值设置为 NULL

php - 通过 PHP 更新数据库

java - Java 中的 MySQL 模式解析器?

php - 使用脚本语言将 CCD CDA 转换为数据库

mysql - 如何将唯一 ID 存储到 mySQL 数据库中?

php - 服务器安全图片

mysql - mysql分区错误

mysql - 在 laravel 5 中使用 mysql json 字段而不是表上的许多可为空字段可能有什么缺点

MySQL 崩溃 - Ubuntu 14.04.5/MYSQL 5.5.53