So I mostly have the query I need, but I noticed that I still get duplicates from the first select and the second select. I thought that using UNION instead of UNION ALL would remove duplicates, but because they have a different sequence number they are not removed. How can I order my results by the select statement without adding an unnecessary seq column?
x
select 1 as seq, t.* from template t
WHERE status = 'ACTIVE' and t.title ~* '.*동s*아s*리s*로s*고s*.*'
UNION
select 2 as seq, t.* from template t
WHERE status = 'ACTIVE' and t.title ~* any(array['.*동s*아s*리s*로s*고s*.*'])
UNION select 3 as seq, t.* from template t WHERE status = 'ACTIVE'
order by seq asc
Advertisement
Answer
You can do this using order by
:
select t.*
from template t
where status = 'ACTIVE'
order by (t.title ~* '.*동s*아s*리s*로s*고s*.*') desc,
(t.title ~* any(array['.*동s*아s*리s*로s*고s*.*']) desc;