2009-12-09 69 views
0

我有一個數據庫,我檢查的大小,因爲客戶端可能只使用一定的空間,以及他們可能只有一定數量的'網頁',我把數據庫也。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個色彩,也顯示每個用戶使用的數量。首先我嘗試像這樣:

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'; 

這應該需要添加兩個我需要的coloumns。如果我忽略了union和down中的所有內容,它會很好地工作,並將最大webhotel大小的信息添加到表中,但是當我嘗試添加另一個coloumn時,出現錯誤,提示「使用的SELECT語句具有不同數量的列」。我嘗試了一些其他的方法,但似乎無法找到一個合適的結果的好方法。我對SQL很陌生,對不起,如果這是一個愚蠢的問題。

回答

1

在聯合查詢中,列數應該相等。

因此,如果在聯合查詢的第一部分中有3列,則第二列中也應該有3列。

在你的例子中,第二部分只有1列。請在附加的2列中指定您需要的內容,並且我們可能能夠協助查詢。

+0

那麼,不知道如何表達它。但是這裏有: 我有幾個MySQL數據庫。每個包含許多表的數據庫,其中一個表的名稱爲「屬性」,其中寫入了允許的大小,最大頁數和最大郵件數量。 查詢應該檢查一個數據庫上所有表的大小,並返回它正在使用的大小。我認爲這部分工作。對於這個新表,我需要將這3個最大值添加或附加到保存服務器名,已用大小和可用空間的新表中。 – Lasse 2009-12-10 11:06:06