sql如何按联合排序';是否在不添加列的情况下创建子查询?

sql如何按联合排序';是否在不添加列的情况下创建子查询?,sql,postgresql,Sql,Postgresql,所以我大部分都有我需要的查询,但是我注意到我仍然从第一次选择和第二次选择中得到重复的查询。我认为使用UNION而不是UNION ALL将删除重复项,但因为它们具有不同的序列号,所以不会删除它们。如何按select语句对结果排序,而不添加不必要的seq列 select 1 as seq, t.* from template t WHERE status = 'ACTIVE' and t.title ~* '.*동\s*아\s*리\s*로\s*고\s*.*' UNION select 2 as

所以我大部分都有我需要的查询,但是我注意到我仍然从第一次选择和第二次选择中得到重复的查询。我认为使用UNION而不是UNION ALL将删除重复项,但因为它们具有不同的序列号,所以不会删除它们。如何按select语句对结果排序,而不添加不必要的seq列

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

您可以使用以下方法执行此操作:
orderby

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;

没有重复项,因为第一列在一个表中为1,在另一个表中为2。这种order by表达式似乎在单个表中有效,但在union的order by上无效。我是否需要以某种方式给联合命名,以便能够引用它而不是模板t?我已经知道了,只需要命名子查询。对不起,我还是个笨蛋。这个世界上有太多东西要学