You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase技术问询:如何筛选关联至少1位说唱流派艺人的曲目

解决Supabase中筛选关联至少一位说唱艺人的曲目问题

你的问题在于,原代码只是对返回的artists关联数据做了过滤,并不会排除那些没有说唱艺人的曲目——这类曲目依然会被返回,只是它们的artists字段会是空数组。

下面是两种可行的解决方案:

方案一:使用内连接(!inner)

通过!inner指定内连接,只会保留存在匹配条件(流派为rap)的艺人的曲目,直接过滤掉不符合要求的曲目:

const tracksWithAtLeast1RapArtist = await supabase
  .from("tracks")
  .select("name, id, artists!inner(genre)")
  .eq("artists.genre", "rap");

这种方式返回的曲目,其artists数组只会包含流派为rap的艺人。

方案二:使用exists子查询

如果需要保留曲目关联的所有艺人信息,同时确保曲目至少有一位说唱艺人,可以用exists子查询:

const tracksWithAtLeast1RapArtist = await supabase
  .from("tracks")
  .select("name, id, artists(genre)")
  .exists((q) =>
    q
      .from("artists")
      .select("id")
      .eq("genre", "rap")
      .match({ track_id: "tracks.id" }) // 替换为你实际的外键字段名,比如artists表中关联tracks的字段名
  );

注意要把track_id替换成你数据库中artists表关联tracks表的实际外键字段(比如如果外键叫track_fk就改成这个)。

内容的提问来源于stack exchange,提问作者Kishan Sripada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:15:39