2013-04-07 51 views
0

我工作產生了一個網上大學管理SYSTM定製的報告,並在此嚴重卡住,一個更新語句來更新多行的MySQL

我有一個名爲主表說report其中有10行I,E學生滾動1到10.屬性是roll,namecs101 [這是主題代碼並使用默認值0創建]。

我有另一個表格說each_subject_cs101與字段roll,namemarks。但可能沒有所有在這裏註冊的10名學生,說8個學生在那裏(第1捲到第8卷,使其更簡單)。

現在我想的是更新report設置cs101 = marks從那些誰是目前在each_subject_cs101學生each_subject_cs101。 單一更新聲明中的這一切。

注:該卷沒有字段是主鍵,這兩個表

會有什麼在MySQL查詢?

[P.S:其實上面提到的所有結構都比較複雜,並且是動態創建的。我用別名這裏,使其更簡單]

+0

你想這件事在一個更新語句中的任何原因? – 2013-04-07 15:46:52

+0

是的,因爲整個邏輯將至少有五個這樣的主題代碼和超過60名學生註冊在分貝,所以運行一個循環(60X5)次每次取得每卷沒有更新會增加複雜的時間.. – 2013-04-07 15:50:41

回答

1
UPDATE report r, each_subject_cs101 escs 
SET r.cs101 = escs.marks 
WHERE r.roll = escs.roll 

UPDATE report r 
JOIN each_subject_cs101 escs 
    ON escs.roll = r.roll 
    SET r.cs101 = escs.marks; 
+0

你不應該建立某種連接條件嗎? (我問,因爲我從來沒有見過這種語法) – asermax 2013-04-07 15:51:01

+0

@酶的這是一箇舊的連接語法。連接條件在'WHERE'子句中。 – 2013-04-07 15:51:56

+0

@asermax這取決於兩個表中存在多少個具有相同「roll」的字段。如果他們都擁有'roll'作爲UNIQUE,則不需要 – hjpotter92 2013-04-07 15:52:13