如何按关联房产数量对Supabase的property_owners排序或筛选?
Supabase按关联房产数量排序/筛选业主的实现方案
你的原有查询代码:
let query = supabase .from("property_owners") .select( `id, full_name, property(id), address(id, street, house_number, city, zipcode, property(id))`, );
这并非Supabase的功能限制,你可以借助PostgreSQL的聚合、分组能力实现需求,以下是具体实现方式:
1. 按关联房产数量排序
在查询中添加聚合函数统计房产数量,再基于该统计值排序:
let query = supabase .from("property_owners") .select(` id, full_name, property(id), address(id, street, house_number, city, zipcode, property(id)), count(property.id) as property_count `) .order("property_count", { ascending: false }); // 从多到少排序,ascending设为true则从小到大
count(property.id)用于统计每个业主关联的房产总数,并命名为property_count- 通过
order方法指定按统计字段排序
2. 筛选拥有超过5套房产的业主
需要结合分组和条件筛选来实现:
let query = supabase .from("property_owners") .select(` id, full_name, property(id), address(id, street, house_number, city, zipcode, property(id)), count(property.id) as property_count `) .groupBy("id, full_name") // 按业主唯一标识分组,需包含所有非聚合字段 .having("property_count", "gt", 5); // 筛选房产数量大于5的业主
groupBy确保按单个业主分组统计房产数,需包含select中所有非聚合的字段(如id、full_name)having用于对聚合后的结果设置筛选条件,gt代表"大于"
内容的提问来源于stack exchange,提问作者Bowis
相关产品推荐
相关产品推荐

