我有一个本机查询在我的dao中不起作用
@Query(
nativeQuery = true,
value = "DELETE FROM products_in_carts WHERE cart_id =?1 AND product_name = ?2 LIMIT= 1"
)
void removeProduct(long id, String productName);
返回: org.postgresql.util.PSQLException: ERROR: syntax error at or near "LIMIT"
我试过了 OFFSET
如其他问题所建议,但也不起作用
2条答案
按热度按时间oknwwptz1#
这是因为,正如我正确理解的文档,postgres不支持使用
LIMIT
在delete
声明。因此,您可以尝试使用变通方法来实现您的需求。例如,通过在delete语句中使用子查询来获取要删除的行。因为我不知道你的table设计我用的是CTID
这里从postgres中找出要删除的行。取自文件(https://www.postgresql.org/docs/8.2/ddl-system-columns.html)
ctid行版本在其表中的物理位置。请注意,尽管ctid可以很快定位行版本,但行的ctid在每次更新或移动时都会发生变化。因此,ctid作为长期行标识符是无用的。应该使用oid,或者更好的是用户定义的序列号来标识逻辑行。
例如(未测试):
wkftcu5l2#
postgres delete语句不支持limit。
https://www.postgresql.org/docs/9.3/sql-delete.html
利用where删除所需的行。