SQL:使用另一个表更新行数

时间:2014-02-20 20:58:00

标签: sql sqlite

有人可以帮我解决这个'简单'的问题。

我有两张桌子:Tunes和SavedRatings

Tunes包含一系列调谐信息,包括Rating(INTEGER)字段和用于唯一标识曲调的MD5字段。

SavedRatings是一个由评级和MD5字段组成的表,这样当我删除Tunes的内容并在以后添加音乐时,我可以识别给该曲调的评级。

所以..我想要做的是通过匹配SavedRatings表中的Tunes MD5字段来更新我的Tunes表中的Rating字段。

我想出了下面的命令,这是完全错误的。你能建议一个替代方案吗?我正在使用SQLite。

UPDATE Tunes
SET Tunes.Rating=SavedRatings.Rating
WHERE Tunes.MD5 IN (SELECT MD5 FROM SavedRatings);

4 个答案:

答案 0 :(得分:2)

UPDATE T
SET T.Rating = S.Rating
FROM Tunes T INNER JOIN SavedRatings S
ON T.MD5 = S.MD5

答案 1 :(得分:1)

您可以执行类似

的操作
UPDATE Tunes
SET Tunes.Rating = SavedRatings.Rating
FROM SavedRatings 
WHERE Tunes.MD5 = SavedRatings.MD5;

答案 2 :(得分:1)

试试吧

update Tunes set Rating = ( select SavedRating.Rating from SavedRating where Tunes.md5 = SavedRating.md5)

希望这有帮助!

答案 3 :(得分:0)

这有效..我怀疑它不是最佳的,但现在必须要做,直到我能得到更好的解决方案:

UPDATE Tunes
SET Rating = ( SELECT Rating FROM SavedRatings WHERE MD5=Tunes.MD5 LIMIT 1 )
WHERE EXISTS ( SELECT Rating FROM SavedRatings WHERE MD5=Tunes.MD5 LIMIT 1 );