sql - 为什么 postgresql 考虑这个子查询列名不完全限定且不明确

标签 sql postgresql plpgsql ambiguity

  Select distinct A.col1, B.col2, col3
   from A inner join B on A.id = B.id
   and B.id in 

       (select distinct col2 from B where ..... )

PostgreSQL 的 plpgsql 解析器不喜欢括号子查询中的非限定“col2”。由于子查询中只提到了一张表,解析器是否会在没有的情况下产生歧义?

最佳答案

像您显示的那样的 SQL 查询就可以工作。

既然你提到了plpgsql,我的猜测是你只显示了实际上是plpgsql函数的片段,并且你遇到了与函数参数的命名冲突,这是可见的函数体中的任何位置(动态 SQL 除外)。

关于sql - 为什么 postgresql 考虑这个子查询列名不完全限定且不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537955/

相关文章:

sql - 使用 PostgreSQL 快速查找相似字符串

sql - 您会将这个简单的 SQL 发回进行返工吗?

sql - Postgres 中的删除函数

PostgreSQL:函数中的嵌套 CASE 条件表达式?

sql - 值在 SQL Server Management Studio 中显示为四舍五入但在提取时不是

SQL - 如何计算列的唯一组合

ruby-on-rails-3 - 在 Ubuntu 10.04 VM 上安装带有 Rails 3.2.1 的 Postgresql 8.4 时如何创建非系统用户?

sql - PostgreSQL - 显示上年+当年周数据

Postgresql索引seq扫描1亿行

sql - PL/pgSQL : can't use variable on the right side of `in` operator