2012-08-10 61 views
0
SELECT gg.itemid,gi.id,gi.courseid, gg.userid, gg.finalgrade 
FROM pauls_grade_grades gg, pauls_grade_items gi 
WHERE gg.itemid = gi.id AND gg.userid =36 AND gi.courseid = 13 

我想爲上面的同一選擇查詢進行更新查詢。使用不同條件的更新

UPDATE pauls_grade_grades 
SET pauls_grade_grades.finalgrade = 28 
WHERE usermodified IS NULL AND userid = 36 AND 
     itemid IN (SELECT gi.id 
        FROM pauls_grade_items gi 
        WHERE gi.courseid=13) 

這是寫一個UPDATE查詢

+0

您的更新查詢是否有效?那麼它的權利.. – 2012-08-10 08:39:51

回答

0

查詢無誤

如果您無法更新數據,則表示該行不存在。 嘗試採取在where子句並將其添加到SELECT語句,並確保你可以選擇一些第一..for例如

select * from pauls_grade_grades 
WHERE usermodified IS NULL AND userid = 36 AND itemid IN 
(SELECT gi.id 
FROM pauls_grade_items gi 
WHERE gi.courseid=13) 

然後加入其中,回你的更新語句

UPDATE pauls_grade_grades SET finalgrade = 29 WHERE usermodified IS NULL AND userid = 36 AND itemid IN (SELECT gi.id 
FROM pauls_grade_items gi 
WHERE gi.courseid=13) 
+0

選擇查詢正在給出正確的輸出,我們如何能以相同的方式更新 – thersa 2012-08-10 08:46:21

+0

不清楚。請你解釋一下 – thersa 2012-08-10 09:11:18

+0

是否可以pauls_grade_grades.finalgrade是一個varchar列? – 2012-08-10 09:21:49

0

已爲更新無故障工作將書面查詢的正確途徑。
讓我來解釋你的查詢是幹什麼的。
您正在使用子查詢進行更新。首先子查詢

SELECT gi.id 
FROM pauls_grade_items gi 
WHERE gi.courseid=13 

將得到執行。它返回的值將被主查詢中的子查詢替換。

+0

該查詢正在工作,但它顯示0rows受影響 – thersa 2012-08-10 08:38:20

+0

@ user1586609可能是它不符合where條款後的條件。 – Jaguar 2012-08-10 08:42:03

+0

你確定符合WHERE子句的語句嗎? – 2012-08-10 08:42:20

0

基本上你可以使用您的SELECT查詢來編寫UPDATE查詢。 試試這個:

UPDATE pauls_grade_grades gg, pauls_grade_items gi 
SET gg.finalgrade = 28 
WHERE gg.itemid = gi.id AND gg.userid =36 AND gi.courseid = 13 
    AND usermodified IS NULL 
+0

更新查詢它顯示錯誤「#1064 - 你在你的SQL語法錯誤;檢查對應於您的MySQL服務器版本從pauls_grade_grades GG使用近」正確的語法手冊,pauls_grade_items gi WHERE gg.itemid = gi.id AND g'第3行「 – thersa 2012-08-10 08:48:35

+0

ok,它是用於SQL Server的。再試一次,我已經修復了它的MySQL版本。 – Conan 2012-08-10 08:53:40

+0

它顯示受影響的0rows – thersa 2012-08-10 09:09:01