Почему этот запрос не работает, а этот работает? - PullRequest
0 голосов
/ 11 июля 2019

В MySQL Shell два почти идентичных запроса. Один работает, другой нет. Разница является ключевым словом. Это почему?

Рабочий запрос просто получает зарплату по вашему выбору в зависимости от того, какое число лимитов вы используете в подзапросе. Так что «Предел 4» даст вам четвертую самую высокую зарплату

SELECT SALARY
FROM (
      SELECT DISTINCT SALARY
      FROM TBLEMPLOYEE
      ORDER BY SALARY DESC LIMIT 3
      ) RESULT
ORDER BY SALARY LIMIT 1

Это успешно дает третью самую высокую зарплату.

Если я уберу слово «результат», оно больше не будет работать. Какую функцию выполняет результат? Это псевдоним? Я получаю это: ОШИБКА 1248 (42000): каждая производная таблица должна иметь свой псевдоним

1 Ответ

1 голос
/ 11 июля 2019

Каждая производная таблица (подзапрос AKA) должна действительно иметь псевдоним.Т.е. каждому запросу в скобках должен быть задан псевдоним (как угодно), который можно использовать для ссылки на него в остальной части внешнего запроса. Да, результатом является псевдоним. В месте результата может быть любое имя, например myaliasили что-то еще.

SELECT SALARY
FROM (
      SELECT DISTINCT SALARY
      FROM TBLEMPLOYEE
      ORDER BY SALARY DESC LIMIT 3
      ) AS RESULT
ORDER BY SALARY LIMIT 1

еще пример

SELECT ID
FROM (SELECT ID,
             msisdn 
      FROM (SELECT * FROM TT2) as myalias
     ) as anotheralias;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...