sqlite - 列别名与另一列名称之间的歧义
问题描述
我有一些列名重叠的表,我想将这些列组合成一个与别名同名的列,例如
select a.name || " " || b.name as name from a join b
这工作正常。但是,如果我想订购它们,例如
order by lower(name) asc
我收到错误ambiguous column name: name
,因为 sqlite 不知道是使用a
's、b
's 还是选择的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)
推荐阅读
- c - Break 语句在 C 编程语言中无法正常工作
- google-bigquery - 如果 BigQuery 中的一周从星期一开始,如何获取当前一周的第一天?
- flask-marshmallow - Marshmallow 反序列化 [(obj, "str"), (obj, "str"), (obj, "str"), ...]
- marklogic - MarkLogic 查询控制台使用 GET 保存文件
- javascript - 使用 php 和 javascript 弹出用户数据
- c - 您如何在 C 中执行一系列 if 语句?
- r - 在 R 数据框中,每组行和列的使用值不是 na
- ios - 更改 UIImagePickerController 栏颜色
- c# - 多次登录后 Mvc C# 会话丢失
- pine-script - 如何使用 pine 识别信号趋势