PostgreSQL - order by an array

后端 未结 2 1051
刺人心
刺人心 2020-12-11 05:05

I have 2 tables - course that contains id and name of the courses and tagCourse that contains tags for each course.

course                    tagcourse
-----         


        
2条回答
  •  猫巷女王i
    2020-12-11 05:56

    create or replace function searchByTags(tags varchar[])
    returns table (id_course integer, name text, quantitiy integer)
    as $$
        select *
        from (
            select c.id_course, c.name, count(*) quantity
            from
                course c
                inner join
                tagcourse tc on c.id_course = tc.id_course
                inner join
                unnest(tags) s(tag) on s.tag = tc.tag
            group by c.id_course, c.name
        ) s
        order by quantity desc, name
        ;
    $$ language sql;
    

提交回复
热议问题