列别名与另一列名称之间的歧义

Ambiguity between column alias and another column's name

我有一些列名重叠的表,我想将这些列合并为一个与别名同名的列,例如

select a.name || " " || b.name as name from a join b

这很好用。但是,如果我想订购它们,例如

order by lower(name) asc

我收到错误 ambiguous column name: name,因为 sqlite 不知道是使用 ab 还是选择的 name 列。我的问题是是否可以专门选择选择的 name 列(不给它一个不同的别名)?也许有一些不错的 <keyword> 使得 <keyword>.name 结果出现在选择的 name 列中。或者真的没有比

更好的解决方案了
with tmp as (select tmp_a.name || " " || tmp_b.name as name from tmp_a join tmp_b)
select name from tmp order by lower(name) asc

我不认为使用 CTE 或子查询不是一个好的解决方案。
如果您不喜欢它们,唯一的方法就是重复 ORDER BY 子句中的表达式:

select a.name || ' ' || b.name as name 
from a join b
on ......
order by lower(a.name || ' ' || b.name)