尝试在 PostgreSQL 中使用“CASE”时出现错误
下午好,我正在尝试在 PgAdmin 中运行查询以增加表中的值(如果存在),如果不存在,它将创建行,我收到错误,但
ERROR: syntax error at or near "CASE"
LINE 1: CASE
^
SQL state: 42601
Character: 1
CASE
WHEN EXISTS(SELECT * FROM counter WHERE user_id = '321') THEN
UPDATE counter
SET counter = counter + 1
WHERE user_id = '321'
ELSE
INSERT INTO counter (user_id) VALUES ('321') -- `counter` column is `SMALLINT DEFAULT 0`
END
我也尝试使用 upsert
INSERT INTO cookies_counter (user_id) VALUES ('321')
ON CONFLICT (user_id) DO
UPDATE SET counter = counter + 1
WHERE user_id = '321'
它给了我而是一个不同的错误
ERROR: column reference "counter" is ambiguous
LINE 2: ON CONFLICT (user_id) DO UPDATE SET counter = counter + 1
^
SQL state: 42702
Character: 100
Good afternoon, I'm trying to run a query in PgAdmin to increment a value in my table if it exists, if not it will create the row, I'm getting an error however
ERROR: syntax error at or near "CASE"
LINE 1: CASE
^
SQL state: 42601
Character: 1
CASE
WHEN EXISTS(SELECT * FROM counter WHERE user_id = '321') THEN
UPDATE counter
SET counter = counter + 1
WHERE user_id = '321'
ELSE
INSERT INTO counter (user_id) VALUES ('321') -- `counter` column is `SMALLINT DEFAULT 0`
END
I've also tried using the upsert
INSERT INTO cookies_counter (user_id) VALUES ('321')
ON CONFLICT (user_id) DO
UPDATE SET counter = counter + 1
WHERE user_id = '321'
It gives me a different error instead
ERROR: column reference "counter" is ambiguous
LINE 2: ON CONFLICT (user_id) DO UPDATE SET counter = counter + 1
^
SQL state: 42702
Character: 100
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
像这样的东西可能会起作用,但这在一定程度上取决于表结构:
Something like this might work, but it depends a little on the table structure: