在任何(数组)中选择任何(数组)

时间:2012-07-15 15:22:08

标签: sql postgresql-9.1

我有一个bigint []专栏:

person
------
id | name  | other_information
------------------------------
 1 | Zé    | {1,2,3}
 2 | João  | {1,3}
 3 | Maria | {3,5}

我需要选择其他信息为2或5的人。怎么样?

1 个答案:

答案 0 :(得分:0)

select *
from person
where 2 = ANY(other_information)
 or 5 = ANY(other_information)

但是,不建议使用数组,因为它会导致非规范化架构。

来自PostgreSQL docs

  

提示:数组不是集合;搜索特定的数组元素即可   数据库错误设计的标志。考虑使用单独的表格   每个项目的行都是一个数组元素。这会更容易   搜索,并可能为大量的更好地扩展   元件。