postgresql可以支持数组,这点在有些时候很有用,但在查询搜索时要注意方法使用,因为数组和集合(行)不同,查询时一般不能直接使用子查询而要使用join。
1. any(array)的使用
select * from dataorder d left join datasource ds on d.uuid=ds.uuid left join source s on ds.sourceid=s.id where d.uuid=any(s.exclude_data)
2. all(array)的使用
要查询上述相反的数据,就可以使用:
select * from dataorder d left join datasource ds on d.uuid=ds.uuid left join source s on ds.sourceid=s.id where d.uuid<>all(s.exclude_data)
reference
1. http://www.postgresql.org/docs/current/static/arrays.html
发表回复