我试图在条件之后使用子查询删除数据,但是当我的sql脚本执行时我的技巧失败了 这是我的剧本:
--trying to insert subquery after "=" operator
delete from wni_layanan where id = SELECT (currval('wni_layanan_id_seq'));
这是在脚本执行后在我的sqleditor中出现的错误消息
ERROR: syntax error at or near "SELECT"
SQL state: 42601
Character: 36
如何在postgresql中使用select条件删除? 请给我解决方案来解决我的问题。谢谢
答案 0 :(得分:1)
您需要将整个子选项包装在括号中。您也不应该在括号中包含currval('..')
之类的“独立”函数调用(或表达式)。
delete from wni_layanan
where id = (SELECT currval('wni_layanan_id_seq') );
如果subselect返回完全一行(和一列),则上面的仅才能正常工作。使用currval()
时,这是有保证的。如果您的子查询返回多行,则需要使用IN (..)
delete from wni_layanan
where id IN (SELECT ... );
但是对于您的示例,您根本不需要子选择:
delete from wni_layanan
where id = currval('wni_layanan_id_seq');