首页 > 解决方案 > 如何在 Postgresql 查询中正确使用子查询

问题描述

我在尽可能自动地重置序列时遇到了麻烦。我正在尝试使用来自 phpPgAdmin 的下一个查询:

SELECT SETVAL('course_subjects_seq', (SELECT MAX(subject_id) FROM course_subjects));

不知何故,这个查询返回:

> HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

指向第一个SELECT SETVAL

下一个查询将给出相同的错误:

SELECT setval("course_subjects_seq", COALESCE((SELECT MAX(subject_id) FROM course_subjects), 1))

谁能指出我做错了什么?

标签: postgresqldatabase-sequence

解决方案


通过这样做修复:

setval 函数需要 regclass、bigint 和 boolean 作为参数,因此我添加了类型转换:

SELECT setval('course_subjects_seq'::regclass, COALESCE((SELECT MAX(subject_id) FROM course_subjects)::bigint, 1));

::regclass

::bigint


推荐阅读