Неопределенность между псевдонимом столбца и именем другого столбца - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть несколько таблиц с перекрывающимися именами столбцов, и я хочу объединить эти столбцы в один столбец с тем же именем, что и псевдоним, например,

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

1 Ответ

1 голос
/ 18 апреля 2020

Я не думаю, что использование CTE или подзапроса не является хорошим решением. Если они вам не нравятся, единственный способ сделать это - повторить выражение в предложении ORDER BY:

select a.name || ' ' || b.name as name 
from a join b
on ......
order by lower(a.name || ' ' || b.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...