arrays - WHERE IN 作为 Postgres 中的子查询
问题描述
我有两张桌子。表用户有一列category_ids
作为整数数组,integer[]
存储为{1001,1002}
我正在尝试获取所有类别的详细信息,但它不起作用。
SELECT *
FROM categories
WHERE id IN (Select category_ids from users where id=1)
当我运行Select category_ids from users where id=1
时,我得到的结果为{1001,1002}
. 如何制作{1001,1002}
或(1001,1002)
我应该改变什么才能使上面的查询工作?
解决方案
您可以使用 =ANY():
SELECT *
FROM categories
JOIN users ON categories.id =any(category_ids)
WHERE users.id = 1;
但是你为什么要使用数组?
推荐阅读
- npm - 查看 npm 包的确切发布日期
- php - 如何在 laravel eloquent builder 中使用原始 sql
- javascript - 操纵杆移动后未根据 x 和 y 轴象限获得正确的值
- ios - swift:将 alamofire 中的 JSON 数据解析为带有数组的字典
- excel - 尝试离开继续倒计时
- julia - 为命名元组设置索引
- java - 尝试将 MySQL 服务器连接到 Spring Boot App STS 时出现多个错误
- javascript - 数据加载器解析嵌套数组
- apache-kafka - Kafka消费者订阅多个主题时接收消息的顺序
- docker - Docker 未满足的依赖项:nvidia-docker2