我有一些列名重叠的表,我想将这些列组合成一列,名称与别名相同,例如
select a.name || " " || b.name as name from a join b
这很好用。但是,如果我想订购它们,例如
order by lower(name) asc
我得到错误ambiguous column name: name
,因为sqlite不知道是使用a
的、b
的还是选择的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)