postgresql删除选择条件

时间:2016-02-02 08:00:32

标签: postgresql

我试图在条件之后使用子查询删除数据,但是当我的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条件删除? 请给我解决方案来解决我的问题。谢谢

1 个答案:

答案 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');