使用GROUP BY的SQLite更新

时间:2014-08-06 02:32:22

标签: sql sqlite group-by sql-update

我有2个表 - 一个Tune表和一个Artist表。 Tune包含一个曲调列表,每个曲调都有一个ArtistID。我想要做的就是为每个艺术家添加曲调,然后用这些值更新Artist表。我无法让我的SQL工作。

这是我到目前为止所做的:

UPDATE Artist
SET
  TuneCount=c
FROM 
(
  SELECT ArtistID AS a, COUNT() AS c 
  FROM Tune 
  GROUP BY ArtistID
)
--WHERE _id=a

有人可以帮帮我吗? SQLite似乎不喜欢第一个FROM关键字。

1 个答案:

答案 0 :(得分:3)

FROM不属于UPDATE查询。首先看一下这些非常有用的SQLite语法图,它们将引导您查询查询语句中可能出现的内容:

http://www.sqlite.org/syntaxdiagrams.html#update-stmt

看起来对我来说就像你要做的那样是将TuneCount改为该艺术家的曲调数量。

基本上我们要用您编写的嵌套查询替换更新查询中的“c”,如下所示:

UPDATE Artist
SET
  TuneCount=(
  SELECT COUNT(*)
  FROM Tune t
  WHERE t.ArtistID = Artist._id
)