Supabase技术问询:如何获取用户关注艺人的全部歌曲
修正后的获取关注艺人全部歌曲的SQL函数
你的getAllSongs函数存在几个SQL语法和逻辑问题,下面是修正方案:
原函数的问题点
- SQL语句顺序错误:
WHERE子句应该放在JOIN操作之后,而非之前 - 表引用错误:你使用了
artist.artistid,但表名是artists,正确写法是artists.artistid - 比较运算符错误:SQL中判断相等使用
=,而非==
修正后的函数(直接关联表写法)
create or replace function getAllSongs(param1 text) returns setof songs as $$ select songs.* from "artists" inner join songs on artists.artistid = songs.artistid where param1 = ANY(artists.artistFollowers); $$ language sql;
复用已有函数的简洁写法
你可以直接调用已实现的getArtists函数,逻辑更清晰:
create or replace function getAllSongs(param1 text) returns setof songs as $$ select songs.* from getArtists(param1) as artists inner join songs on artists.artistid = songs.artistid; $$ language sql;
以上两种写法都会返回当前用户(param1对应的用户ID)所关注艺人的全部歌曲数据,符合returns setof songs的返回要求。
内容的提问来源于stack exchange,提问作者Redstain
相关产品推荐
相关产品推荐

