我有一张“球员”和“奖品”的桌子。我有一些重复的播放器条目,它们有不同的id,但其他信息相同。
我正在尝试更新与第二个玩家条目相关联的奖励,以便最终删除重复项。
这显然不是最有效的查询,但它只需要运行一次,并且只有10-15个重复项。
到目前为止我有这个:

UPDATE aw
SET aw.player_id = map.id1
FROM awards as aw,
    (SELECT a.id as id1, b.id as id2
    FROM players a, players b
    WHERE a.first_name = b.first_name
    AND a.last_name = b.last_name
    AND a.id != b.id
    AND a.team is not null
    AND a.college is not null) as map
WHERE map.id2 = aw.player_id

这给了我一个未指定的语法错误,但是如果我用
“Select aw.player_id,map.id1”,它返回一个包含预期值的两列表(因此列名和表引用都是正确的)。
我肯定漏掉了一些显而易见的东西,但这是什么?

最佳答案

UPDATE syntax中没有FROM。
在设置之前,应该在更新部分定义表

UPDATE awards as aw,
  (SELECT a.id as id1, b.id as id2
  FROM players a, players b
  WHERE a.first_name = b.first_name
  AND a.last_name = b.last_name
  AND a.id != b.id
  AND a.team is not null
  AND a.college is not null) as map
SET aw.player_id = map.id1
WHERE map.id2 = aw.player_id

关于mysql - 使用另一个查询从联接更新表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10036039/

10-09 15:05
查看更多