2010-11-01 6 views
2

J'ai cette requête:Ma requête SQL presque correcte donne une erreur

SELECT * FROM references WHERE title LIKE '%NSObject%' 

Donner cette erreur:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near references WHERE title LIKE '%NSObject%' at line 1

Cependant, je ne peux pas trouver mon erreur. Quel est le problème avec cette requête?

+0

Quelle version de SQL? – egrunin

+0

Renommez la table 'references' par' references_table' ou 'my_refereneces' ou' references_to_important_things'. Comme d'autres l'ont mentionné, vous pouvez l'inclure dans les guillemets, mais à mon humble avis, il vaut mieux éviter d'utiliser des mots-clés comme noms pour vos propres objets autant que possible, donc j'applique généralement un qualificatif pour le rendre plus clair. – FrustratedWithFormsDesigner

+0

Le problème est que ce n'est pas ma base de données, et je n'ai pas les permissions pour changer sa structure. La base de données est également déjà utilisée par d'autres applications. –

Répondre

13

references est un mot réservé.

Entourez dans les apostrophes inverses:

SELECT * 
FROM `references` 
WHERE title LIKE '%NSObject%' 
+0

Génial, merci! Veuillez patienter 7 minutes à cause du stupide délai d'acceptation. >.> –

+0

@TimeMachine: bien sûr. Mais celui-ci était vraiment dur! – Quassnoi

+1

Mieux encore, je trouverais un nom différent pour la table. Avoir des noms de table qui sont des mots réservés est une douleur récurrente. Un cadeau qui continue de donner. – Jay

3

References est un mot-clé

si vous enveloppez les références avec des accents graves, il saura que vous utilisez references comme une table ou nom de champ

comme ce

Select * from `references`