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 :(得分:0)
您为更新而编写的查询将正常运行 让我解释一下你的查询的作用 您正在使用子查询进行更新。首先是子查询
SELECT gi.id
FROM pauls_grade_items gi
WHERE gi.courseid=13
将被执行。它返回的值将被主查询中的此子查询替换。
答案 1 :(得分: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)
然后将其添加回更新语句
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)
答案 2 :(得分: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