SQL大小比较

时间:2009-12-09 11:05:25

标签: union sql

我有一个数据库,我检查大小,因为客户端可能只使用一定数量的空间,以及它们可能只有一定数量的“页面”,我放在数据库中也是如此。

我有以下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个coloumns,它们还显示每个用户使用了多少。首先我尝试这样:

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大小的信息添加到表中,但是当我尝试添加另一个coloumn时,我会收到一条错误消息“使用的SELECT语句具有不同的列数”。我尝试了一些其他的方法,但似乎无法找到一个好方法,我得到了正确的结果。我对SQL很陌生,对不起,如果这是一个愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

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

因此,如果联合查询的第一部分中有3列,则第二部分中也应包含3列。

在您的示例中,第二部分中只有1列。请在附加的2列中指定您需要的内容,我们可以协助您进行查询。