Ошибка MySQL: Неизвестный столбец в разделе "where clause"

У меня есть таблица под названием bank с тремя столбцами: uid, nick, balance.

Я пытаюсь создать запрос, который вернет баланс на основе ника, и я получаю сообщение об ошибке Unknown column 'Alex' in 'where clause', когда я использую этот запрос:

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1

Может ли кто-нибудь увидеть, что я делаю неправильно здесь?

Ответ 1

backticks (`) используются для идентификаторов, таких как имена таблиц, имена столбцов и т.д. Одиночные кавычки (') используются для строковых литералов.

Вы хотите сделать:

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1

Или, чтобы быть более явным:

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1

Если нет двусмысленности, и когда имена таблиц и столбцов не имеют специальных символов или пробелов, вы можете оставить `off.

Вот некоторая документация, которая сухая и трудночитаемая: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Но вот связанный с этим вопрос о dba.stackoverflow, который легче читать: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

И вот очень хорошая страница, которую я рекомендую всем читать: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

Ответ 2

Вы используете неправильный символ ``

Используйте 'вместо

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1

Ответ 3

Вам нужно использовать одиночную кавычку ('), а не отметки для значений ваших полей

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1

Знаки меток используются для обозначения имен полей.

Ответ 4

Другой причиной такой ошибки является то, что в данной таблице нет такого столбца. Проверьте орфографию, регистр букв, типографские ошибки и фактическое присутствие данного поля в определении таблицы.