#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;