Postgresql 在ALTER TABLE ALTER COLUMN的Using子句中使用SELECT?

Postgresql 在ALTER TABLE ALTER COLUMN的Using子句中使用SELECT?,postgresql,Postgresql,我有一个表1,列为“abc”,类型为字符变化 我想把它修改成bigint。 列值应替换为外部表中的值,如外键引用, i、 表2中该值对应的e id 我怎么做? 我的尝试是: ALTER TABLE table1 ALTER COLUMN abc TYPE bigint USING SELECT some_id from table2 where col1=abc 不能在此上下文中使用查询。创建一个函数: create or replace function get_some_id(varch

我有一个表1,列为“abc”,类型为字符变化 我想把它修改成bigint。 列值应替换为外部表中的值,如外键引用, i、 表2中该值对应的e id 我怎么做? 我的尝试是:

 ALTER TABLE table1 ALTER COLUMN abc TYPE bigint USING SELECT some_id from table2 where col1=abc

不能在此上下文中使用查询。创建一个函数:

create or replace function get_some_id(varchar)
returns bigint language sql as $$
    select some_id from table2 where col1 = $1
$$;

alter table table1 alter column abc type bigint using get_some_id(abc);

你试过把子选择放在括号里吗?是的,我试过了。我们不能在“using”子句中使用子查询。