postgresql - 如何在 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))
谁能指出我做错了什么?
解决方案
通过这样做修复:
setval 函数需要 regclass、bigint 和 boolean 作为参数,因此我添加了类型转换:
SELECT setval('course_subjects_seq'::regclass, COALESCE((SELECT MAX(subject_id) FROM course_subjects)::bigint, 1));
::regclass
和::bigint
推荐阅读
- sql - 创建一个新列并将其标记为 1 还是 0?
- javascript - unable to get data sent from function call to firebase cloud functions
- java - Spigot Minecraft 插件编码 NoClassDefFound 错误 mysql
- hadoop - 我在哪里可以获得免费的 RPM Apache Ambari?
- python - TypeError:django保存函数中不支持的操作数类型:'datetime.time'和'datetime.time'
- scala - Scala - 按组选择最小值
- java - 使用 Java Stream 和 Lambda 重写嵌套的 for 循环
- python - 查找包含图像的子文件夹
- python - 求解器“CPLEX”失败。参数建议
- ios - 如何在swift中解析分组嵌套字典