2012-04-13 2 views
11

J'ai une table appelée bank avec trois colonnes: uid, nick, balance.Erreur MySQL: Colonne inconnue dans 'where clause'

Je suis en train de créer une requête qui renverra l'équilibre en fonction du pseudo, et je reçois une erreur Unknown column 'Alex' in 'where clause' lorsque j'utilise cette requête:

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

Quelqu'un peut-il voir ce que je fais mal ici ?

+0

Avez-vous utilisé des guillemets autour de "Alex" ou sont ces guillemets simples? – gmalette

Répondre

26

des apostrophes inverses (`) sont utilisés pour les identificateurs, comme les noms de table, les noms de colonnes, etc. Les guillemets simples (') sont utilisé pour les littéraux de chaîne.

Vous voulez faire:

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

Ou, pour être plus explicite:

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

Quand il n'y a aucune chance d'ambiguïté, et lorsque les noms de table/colonne ne sont pas des caractères spéciaux ou espaces, alors vous pouvez laisser le `off.

Voici une documentation qui est sec et difficile à lire: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Mais voici une question connexe sur dba.stackoverflow qui est plus facile à lire: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

Et voici une page très bien que Je recommande à tout le monde lire: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

5

Vous devez utiliser les guillemets simples ('), pas cocher pour les valeurs repères de vos champs

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

coches sont utilisés pour désigner les noms de champs.

6

Vous utilisez le mauvais "`"

utilisation à la place

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

Une autre raison d'une telle erreur est, bien, il n'y a pas une telle colonne dans la table donnée. Vérifier l'orthographe, la casse des lettres, les erreurs typographiques et la présence réelle du champ donné dans la définition de la table.

Questions connexes