代码之家  ›  专栏  ›  技术社区  ›  SparkyNZ

使用GROUP BY更新SQLite

  •  1
  • SparkyNZ  · 技术社区  · 12 年前

    我有两张桌子——一张调音台和一张艺术家台。曲调包含一个曲调列表,每个曲调都有一个ArtistID。我想做的是汇总每个艺术家的曲调,然后用这些值更新艺术家表。我的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 回复  |  直到 12 年前
        1
  •  3
  •   Scott    12 年前

    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
    )