在插入时:列引用"得分"不明确

biw*_*biw 23 postgresql

我在postgresql中有以下命令:

INSERT INTO word_relations(word1_id, word2_id, score) VALUES($1, $2, $3)
ON CONFLICT (word1_id, word2_id) DO UPDATE SET score = score + $3`)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

column reference "score" is ambiguous
Run Code Online (Sandbox Code Playgroud)

我觉得这很奇怪,因为我只使用一张桌子.有任何想法吗?

Gor*_*off 38

论右侧=set条款,有两种可能性score: EXCLUDED.scoreword_relations.score.前者是一种访问插入值的方法; 后者是一种访问存储在行中的值的方法.

我会这样写:

ON CONFLICT (word1_id, word2_id) DO
    UPDATE SET score = word_relations.score + EXCLUDED.score
Run Code Online (Sandbox Code Playgroud)

  • word_relations.score是旧值,而EXCLUDED.score是您现在要插入的新值 (2认同)