首页 > 解决方案 > 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)我应该改变什么才能使上面的查询工作?

标签: arrayspostgresqlsubquery

解决方案


您可以使用 =ANY():

SELECT  * 
FROM categories 
    JOIN users ON categories.id =any(category_ids)
WHERE   users.id = 1;

但是你为什么要使用数组?


推荐阅读