mySQL JOIN LEFT 不起作用?

标签 mysql sql left-join

我有两个表:tweets(包含列 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

我不明白错误从何而来。我已经根据 MySQL 文档(http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html)构建了查询,但我可能遗漏了一些东西?

最佳答案

使用这个:

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 是保留字,因此必须用反引号括起来。
看看this link获得所有保留字的列表。

关于mySQL JOIN LEFT 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168183/

相关文章:

php - Laravel save() - 插入数据而不是更新

Mysql 将列拆分为 3 列以便在 phpMyAdmin 中查看

Symfony2 - 如何使用原则 2 中的条件查询左连接

mysql - 从具有零值的单个表返回多列结果

javascript - 使用 node.js 将多行插入到 mysql

mysql - SQL 分组为一列中以逗号分隔的值列表

php - 查询适用于 mysql,但不适用于 php sql 调用

c# - 存储过程删除查询不起作用。但是当它自己在编辑器中运行而不调用它时它可以正常工作

sql - 为什么查询多于每个实体与少于一些实体更难?

mysql - Doctrine 的 left join 行为与普通 sql 不同