如何解决PostgreSQL:在JOIN条件下不允许使用集合调整功能
我有两个表需要联接。一个表(称为表A)在名为“ ProductCode”的字段中包含产品的字母代码。另一个表(表B)包含相同的字母代码,并附有一堆数字,因此我使用REGEXP_MATCHES(B.ProductCode,'([[A-Za-z])','g'))提取它[1]。然后,我尝试像这样连接两个表:
select * from A
inner join B on A.ProductCode = REGEXP_MATCHES(B.ProductCode,'([A-Za-z])','g'))[1]
例如:
Table A:
----------------------
Product Code | Sales
----------------------
A | 100
B | 200
Table B:
---------------------
Product Code | Region
---------------------
A234 | Midwest
B543 | Southwest
上面的联接的期望结果将是:
------------------------------
Product Code | Sales | Region
----------------------------
A | 100 | Midwest
B | 200 | Southwest
但是我收到了错误消息:“在JOIN条件下不允许使用Set-turning函数”。
我知道REGEXP_MATCHES返回一个数组,但是我正在提取该数组的元素([1]),所以它不再应该是集合吗?不知道如何解决它。感谢您的任何建议。
解决方法
对于此示例数据,正则表达式似乎有些过分。您可以只使用substring()
或like
:
select a.*,b.region
from a
inner join b on b.product_code like a.product_code || '%'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。