2010-11-01 3 views
2

У меня есть этот запрос:Мой почти правильный запрос SQL дает ошибку

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

Давая эту ошибку:

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

Однако, я не могу найти свою ошибку. Что не так с этим запросом?

+0

Какая версия SQL? – egrunin

+0

Переименуйте таблицу 'reference' в' reference_table' или 'my_refereneces' или' reference_to_important_things'. Как упоминалось выше, вы можете заключить его в backticks, но IMHO, лучше избегать использования ключевых слов в качестве имен для ваших собственных объектов, когда это возможно, поэтому я обычно применяю некоторый квалификатор, чтобы сделать его более понятным. – FrustratedWithFormsDesigner

+0

Проблема в том, что это не моя база данных, и у меня нет прав на изменение ее структуры. База данных также уже используется некоторыми другими приложениями. – 2010-11-01 14:24:08

ответ

13

references - зарезервированное слово.

Вложите его в обратные кавычки:

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

Удивительный, спасибо! Подождите 7 минут из-за глупой задержки приема. >.> – 2010-11-01 14:20:24

+0

@TimeMachine: конечно. Но это было очень тяжело! – Quassnoi

+1

Еще лучше, я придумал другое имя для стола. Наличие имен таблиц, которые являются зарезервированными словами, является повторяющейся болью. Подарок, который продолжает давать. – Jay

3

References является ключевым словом

, если вы оберните ссылки с обратными кавычками он будет знать, что вы используете references в виде таблицы или полей имени

как это

Select * from `references` 
Смежные вопросы