我正在尝试对表名称中包含 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/