Postgresql Removing duplicates in a strings in the row

Viewed 29

I have this code here

select ri.restaurant_id, string_agg(t.cuisine,',') as ncuisine
from restaurant_items ri 
join restaurants r on r.id = ri.restaurant_id 
left join food_taxonomy t on ri.name ilike concat('%',t.keywords,'%')
where ri.restaurant_id = 1
group by ri.restaurant_id

which gets me this results

restaurant_id  ncuisine 

1.               Italian,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Greek,Italian,Italian,Greek,Italian,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,French,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,Italian,American,Italian,Italian,Italian,Italian,Italian,American,French,American,Italian,Italian,American,American,Italian

is there a function that would go with my code and remove the duplicate strings in "ncuisine" so it only shows Italian, American and French?

I believe i can put something near the string_agg function but not sure what functions i can use.

1 Answers

Distinct will make the difference:

select ri.restaurant_id, string_agg(distinct t.cuisine,',') as ncuisine
from restaurant_items ri 
join restaurants r on r.id = ri.restaurant_id 
left join food_taxonomy t on ri.name ilike concat('%',t.keywords,'%')
where ri.restaurant_id = 1
group by ri.restaurant_id;
Related