0

我有一个检查大小的数据库,因为客户端可能只使用一定数量的空间,而且他们可能只有一定数量的“页面”,我也将它们放入数据库中。

我有以下 sql 查询:

SELECT table_schema "Servers",
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema ;

这将返回一个包含我需要的信息的表格。但是,我想添加 3 个列来显示每个用户的使用量。首先我尝试这样:

SELECT table_schema "Servers",
sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB",
property_value "MaxWebhotelSize"
FROM information_schema.TABLES, properties
WHERE property_key LIKE 'MaxWEbhotelSize'
GROUP BY table_schema
UNION
SELECT property_value "MaxPages"
FROM properties
WHERE property_key LIKE 'MaxPages';

这应该需要添加两个我需要的列。如果我省略了 union 和 down 的所有内容,它会很好地工作并将有关最大 webhotel 大小的信息添加到表中,但是当我尝试添加另一个列时,我收到一条错误消息,提示“使用的 SELECT 语句具有不同的列数”。我尝试了其他一些方法,但似乎无法找到一个获得正确结果的好方法。我对 SQL 很陌生,如果这是一个愚蠢的问题,我很抱歉。

4

1 回答 1

1

在联合查询中,列数应该相等。

因此,如果联合查询的第一部分有 3 列,那么第二部分也应该有 3 列。

在您的示例中,您在第二部分中只有 1 列。请在额外的 2 列中指定您的要求,我们或许可以协助查询。

于 2009-12-09T11:23:13.227 回答