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 クエリを記述する正しい方法ですか?

4

3 に答える 3

0

更新用に作成したクエリは、失敗することなく機能します。
あなたの質問が何をするのか説明させてください。
更新にサブクエリを使用しています。最初にサブクエリ

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

実行されます。返される値は、メインクエリでこのサブクエリに置き換えられます。

于 2012-08-10T08:37:19.607 に答える
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
于 2012-08-10T08:45:58.690 に答える
0

クエリは正しい

データを更新できない場合、それは行が存在しないことを意味します。where 句を使用して SELECT ステートメントに追加し、最初に何かを選択できることを確認してください..たとえば

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) 

次に、更新ステートメントに where back を追加します

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) 
于 2012-08-10T08:43:09.100 に答える