Неизвестный столбец в ошибке "список полей" при запросе обновления MySQL


Я продолжаю получать ошибку MySQL #1054, при попытке выполнить этот запрос на обновление:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

вероятно, это какая-то синтаксическая ошибка, но я попытался использовать внутреннее соединение вместо этого и другие изменения, но я продолжаю получать одно и то же сообщение:

Unknown column 'y' in 'field list' 
7 91

7 ответов:

попробуйте использовать разные кавычки для "y", поскольку символ кавычки идентификатора является обратным ("`"). В противном случае MySQL "думает", что вы указываете на столбец с именем "y".

см. также Документация MySQL 5

заключите любую строку, которая будет передана серверу mysql внутри одинарных кавычек; например:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

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

вы можете проверить свой выбор кавычек (используйте двойные/ одинарные кавычки для значений, строк и т. д. и обратные кавычки для имен столбцов).

Так как вы только хотите обновить таблицу master_user_profile Я бы рекомендовал вложенный запрос:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);

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

запрос, подобный thi, также вызовет ошибку

select table1.id from table2

где таблица указана в столбце select и не включена в предложение from.

во время работы над сборкой приложения .Net с кодом EF во-первых, я получил это сообщение об ошибке при попытке применить мою миграцию, где у меня был Sql("UPDATE tableName SET columnName = value"); заявление.

оказывается, я неправильно написал имя столбца.

Я тоже получил ту же ошибку, проблема в моем случае заключается в том, что я включил имя столбца в GROUP BY п. и это вызвало эту ошибку. Поэтому удалил столбец из GROUP BY п. и это сработало!!!