2014-03-19 84 views
0

也許我完全錯了,而且在MySQL中不可行。但是,我想要做的是填寫的列行基本的選擇查詢:在MySQL中自動更新列值

例如:

表1:

IdNode NodeName NodeContact NodeStatus Nodegroup 
    1  Machine1  IT   1   IT 
    2  Machine2  IT   0   IT 
    3  Machine3  IT   1   IT 
    4  Machine4  IT   1  Others 
    4  Machine5  IT   1  Others 

表2

IdGroup GroupName NodesManagedbyGroup 
    1   IT    ?? 
    2   others   ?? 

有這兩個表格,我想填寫(自動)表格2列NodesManagedbyGroup中的所有行。

手動這將是:

SELECT COUNT(*) FROM table1 where MemberOfGroup='IT';

結果值INT = 3

然後

update table2 NodesManagedbyGroup = 3 where GroupName='IT';

有任何方式的MySQL爲我做自動

+0

您不想存儲計算值。 – Kermit

回答

3

您可以使用triggers做到這一點 - 你會創建INSERT,UPDATE觸發器和刪除表1更新表2

這通常是一個壞主意,但 - 它的周圍複製數據庫的信息,反規範化模式。

或者,您可以創建一個view,它可以即時計算此數據,並在查詢時像表格一樣工作。

+0

+1使用視圖。 –

+0

我懷疑'自動'是指與觸發器有關的東西。對我而言,OP只是希望避免手動選擇每個組的更新值 –

+0

觸發器適用於我。但最終我決定改變我的方式,不要重複數據庫中的信息,因爲@Neville指出。我將嘗試做一些內部連接查詢並從不同的表中獲取結果。不管怎麼說,還是要謝謝你!! – Sallyerik

1

使用multiple UPDATE語法與子查詢選擇計數作爲樣本:

UPDATE 
    table2 
    INNER JOIN 
    (SELECT COUNT(1) AS gcount, Nodegroup FROM table1 GROUP BY Nodegroup) AS counts 
    ON table2.GroupName=counts.Nodegroup 
SET 
    table2.NodesManagedbyGroup=table1.gcount 
0

您可以設置執行存儲過程每隔15分鐘左右的工作嗎?