Есть ли другой способ использовать Alias ​​в Sql? - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю рядом с проблемой обмена идентификаторами.Я нашел одно решение, оно частично работает.

SELECT tmp.id, tmp.student FROM
(
    SELECT id-1 AS id, student FROM seat WHERE id%2 = 0  -- even id -1
    UNION
    SELECT id+1 AS id, student FROM seat WHERE id%2 = 1  -- odd id +1

) tmp
ORDER BY tmp.id 

Я знаю основную идею, но все еще путаю с синтаксисом или выражением.Мне интересно откуда берется тмп?Есть ли другой способ использовать псевдоним в SQL?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы можете просто использовать выражение case:

SELECT (CASE WHEN s.id % 2 = 0 THEN s.id - 1 ELSE s.id + 1 
        END) AS id,
       s.student
FROM seat s;

UNION - определенно неправильный способ решения этой проблемы.

Обратите внимание, что s воспроизводитта же роль, что и tmp в вашем вопросе.Это псевдоним таблицы, который называет таблицу или подзапрос в предложении from.

0 голосов
/ 26 февраля 2019

В примере псевдоним tmp изменяется в my_table_alias

SELECT my_table_alias.id, my_table_alias.student FROM
(
    SELECT id-1 AS id, student FROM seat WHERE id%2 = 0  -- even id -1
    UNION
    SELECT id+1 AS id, student FROM seat WHERE id%2 = 1  -- odd id +1

) my_table_alias
ORDER BY my_table_alias.id 

Это вводится синтаксисом select ,,,, FROM (подзапрос) my_table_alias, когда вы используете FROM (подзапрос), вам нужен my_table_alias..

Псевдоним таблицы для then FROM (подзапрос) в обязательном порядке. Если вы хотите обратиться к столбцу, полученному из FROM (подзапрос) во внешней части запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...