【问题标题】:SQLite Update using GROUP BY使用 GROUP BY 更新 SQLite
【发布时间】:2014-08-06 02:32:22
【问题描述】:

我有 2 张桌子 - 一张 Tune 桌子和一张 Artist 桌子。 Tune 包含一个曲调列表,每个曲调都有一个 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 关键字。

【问题讨论】:

标签: sql sqlite group-by sql-update


【解决方案1】:

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
)

【讨论】:

  • 这看起来更简单正确,但仍然无法正常工作。由于某种原因,它不喜欢“a”别名。
  • 这似乎有效。 ArtistID 在我的 Artist 表中实际上是“_id”,但为了清楚起见,我对其进行了更改: UPDATE Artist SET TuneCount=( SELECT COUNT() FROM Tune t WHERE t.ArtistID = Artist._id )
  • 你是对的 - 看起来你不能为更新表设置别名。我将编辑答案以匹配适合您的答案。
  • 仅供参考 sqlite 现在支持 UPDATE FROM
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多