mySQL JOIN LEFT не работает? - PullRequest
       3

mySQL JOIN LEFT не работает?

0 голосов
/ 17 ноября 2011

У меня есть две таблицы: твиты (также содержащие столбец tweet_id) и ссылки (содержащие столбцы tweet_id и class_id).Не всем твитам может быть назначен class_id.Я ожидал, что это сработает, чтобы извлечь всю информацию из твита, включая его class_id (если он был установлен):

SELECT t.*, r.class_id FROM tweets t 
LEFT JOIN references r ON (t.tweet_id = r.tweet_id) 
ORDER BY t.tweet_id DESC LIMIT 50

Однако я получаю сообщение об ошибке

#1064 - 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 r ON 
(t.tweet_id = r.tweet_id) ORDER BY t.tweet_id DESC LIMIT 50' at line 1

Iне понимаю, откуда исходит ошибка.Я построил запрос в соответствии с документацией MySQL (http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html), но, возможно, я что-то упустил?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2011

Используйте это:

SELECT t.*, r.class_id FROM tweets t 
LEFT JOIN `references` r ON (t.tweet_id = r.tweet_id) 
ORDER BY t.tweet_id DESC 
LIMIT 50

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

0 голосов
/ 17 ноября 2011

ссылки - зарезервированное слово MySQL

0 голосов
/ 17 ноября 2011

REFERENCES является зарезервированным словом SQL, поэтому вам нужно использовать кавычки:

SELECT t.*, r.class_id FROM tweets t 
LEFT JOIN `references` r ON ...

Кстати, ТАК окрашивает ваше references слово в синий, это должно дать вам подсказку.

...