我有一个名为的数据库模仿在我的postgres 数据库。我正在尝试执行此命令:
select hadm_id from admission_ids where hadm_id in (select distinct on (subject_id) hadm_id from (select * from admissions order by admittime) tt
但我收到此错误: 关系“录取”不存在 当我通过将 admissions 更改为 mimic iii.admissions 来修改查询时,它可以工作。知道 mimic iii 是模式,当我键入此查询时,会出现以下结果:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'mimiciii';
table_name
--------------------
admissions
callout
caregivers
datetimeevents
...
我的问题是,我该怎么做才能让用户只输入表的名称,而不使用 schema.tableName ?
答案1
我的问题是,我该怎么做才能让用户只输入表的名称,而不使用 schema.tableName ?
通过将架构放入您的search_path
。
除了SET search_path TO ...
在会话持续期间有效之外,还可以使用 将其设置为每个用户的永久属性ALTER USER username SET search_path='...'
,或者使用 将其设置为每个数据库的 永久属性ALTER DATABASE dbname SET search_path='...'
。