【发布时间】:2016-03-24 02:43:43
【问题描述】:
这是我正在尝试编写的查询的简化版本。它旨在将一行保存为变量combine,然后UPDATE media_hashtags 表(如果存在特定条目),否则插入该条目。
WITH
combine AS (
SELECT * FROM hashtags WHERE hashtag_text='HOPPA'
)
UPDATE media_hashtags SET hashtag_id = (SELECT id FROM combine) WHERE user_id = 58 AND media_id=161;
INSERT INTO media_hashtags (media_id, user_id, hashtag_id)
SELECT 161, 58, (SELECT id FROM combine)
WHERE NOT EXISTS (
SELECT * FROM media_hashtags
WHERE (
user_id = 58 AND
media_id = 161
)
)
RETURNING *
但是,我得到了这个错误:
ERROR: relation "combine" does not exist
LINE 8: SELECT 161, 58, (SELECT id FROM combine)
有趣的是,如果我只使用UPDATE 或INSERT 命令进行查询,那么它会按预期执行。仅当我同时执行这两项操作时才会发生错误。关于问题是什么以及解决方法的任何想法?
【问题讨论】:
-
这里似乎有两个单独的查询(查找分号)。很自然,第二个看不到第一个的
combine -
这是有道理的。我想我可以重新编写组合,但这会很冗长。有没有更好的方法来解决这个问题?
标签: postgresql sql-update sql-insert