sql - 错误:运算符不存在:bigint = bigint[]
问题描述
SQL 查询
SELECT type from types where id in (SELECT type_ids from user where id=1)
这里是子查询
SELECT type_ids from user where id=1
返回 bigint[] 类型的值。
我该如何解决这个问题?
解决方案
值列表和数组值之间存在细微差别,您可以对它们使用的操作。
运算符将IN
一个值与一个值列表进行比较,例如返回多行的子查询。因此,它适用于类似SELECT type from types where id in (SELECT type_id from user)
istype_id
的情况bigint
,但子查询返回了几行。
正如文档所说,id in (a, b, c)
相当于id=a OR id=b OR id=c
,这就是您收到错误的原因:Postgres 尝试计算id = (SELECT type_ids from user where id=1)
但不知道如何将 abigint
与 bigints ( ) 数组进行比较bigint[]
。
运算符将= ANY
一个值与单个数组 value进行比较,这就是您在此处所拥有的:SELECT type_ids from user where id=1
返回单行,但该行中的值是一个数组(一个bigint[]
值)。
所以编写查询的一种方法是:
SELECT type from types where id = ANY (SELECT type_ids from user where id=1)
推荐阅读
- arduino - Mpu6050 连接失败
- python-3.x - 从文件中读取如何将字符串附加到列表中,直到 python 中的特定标记
- javascript - 如何在可触摸项目上更新对象数组状态和屏幕样式点击反应原生
- javascript - 什么是反应方式来做到这一点?
- python - Pytest:如何设置我的 pytest 配置(conftest)以在测试环境中运行?
- node.js - 按设备 ID 获取通知 - OneSignal
- python - 如何使用 tkinter 在单击时将按钮从一帧移动到另一帧?
- python-3.x - 使用漂亮的汤从 span 类中解析文本
- css - SCSS 到 CSS 样式表
- postgresql - 如何在顶层登录到 postgreSQL?