Ошибка при выполнении следующего запроса mysql

#mysql #mysql-error-1054

#mysql #mysql-ошибка-1054

Вопрос:

 select name from movie as d
where d.mov = movie.mov;
  

.
ОШИБКА 1054 (42S22): неизвестный столбец ‘d.mov в ‘предложении where’
.
я уверен, что столбец mov существует.

но это правда

 select name from movie as d
where d.mov = mov;
  

Комментарии:

1. moive ? Опечатки обычно не работают должным образом.

2. Что вы пытаетесь сделать? Зачем присваивать таблице псевдоним, а затем сравнивать столбец с самим собой, используя как коррелированные, так и некоррелированные имена?

3. зачем вам присваивать таблице псевдоним и сравнивать одно и то же значение столбца с самим собой. Этот запрос, если бы он работал, всегда возвращал бы все строки.

4. @John — Это исключило бы строки, где mov было NULL

5. @John Hartsock: на самом деле он не вернет все строки, если mov может содержать нулевые значения.

Ответ №1:

Когда вы определяете псевдоним для таблицы, вам всегда приходится использовать этот псевдоним.

Первый запрос не работает, потому что после определения псевдонима эта таблица теперь доступна только с использованием этого псевдонима.

Второй запрос работает, потому что исключение префикса таблицы / псевдонима допустимо до тех пор, пока имя столбца уникально.

Комментарии:

1. Однако странное сообщение об ошибке. На что он жалуется d.mov ? Конечно, movie.mov проблема.

2. @Martin: хорошая мысль. На самом деле я упустил из виду эту деталь. Но, учитывая тот факт, что первый запрос уже содержит одну опечатку, возможно, их больше, и сообщение об ошибке на самом деле не относится к запросу.

Ответ №2:

«movie» или «moive»? (Лаконичный, точный, но слишком короткий для ответа.)

Ответ №3:

если

 select name from moive as d
where d.mov = mov;
  

верно, чем, я думаю, вы должны написать

 select name from moive as d
where d.mov = moive.mov;