列别名与另一列名称之间的歧义
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 不知道是使用 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)
我有一些列名重叠的表,我想将这些列合并为一个与别名同名的列,例如
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)