在SQL中的一个输出中组合表值

时间:2014-07-06 10:00:17

标签: mysql sql join

我有两个表:一个叫tweets,一个叫referencestweets包含行tweet_idclassified等。 references由行tweet_idclass_id组成。

tweet_id中的行references仅包含表tweet_idtweets总数的一小部分。

我想要做的是组合这些表格,使最终表格显示行r.tweet_idt.classifiedr.class_id

我已经提出了这个查询,但由于某种原因它显示了零行输出。但实际上,r.tweet_id中有大约900行,这些行都存在于t.tweet_id中。

SELECT 't.tweet_id', 't.classified', 'r.tweet_id', 'r.class_id'
FROM `tweets` t, `references` r
WHERE 'r.tweet_id' = 't.tweet_id'

有人可以告诉我我做错了什么以及如何更改我的脚本以获得理想的结果?

1 个答案:

答案 0 :(得分:2)

Mysql使用反引号`escape schema object names(列,表,数据库)和撇号'以及引号"escape strings所以你要比较字符串{ {1}}在您的条件中使用字符串r.tweet_id(应该是假的),执行:

t.tweed_id

请注意,您必须转义单词SELECT t.tweet_id, t.classified, r.tweet_id, r.class_id FROM tweets AS t INNER JOIN `references` AS r ON r.tweet_id = t.tweet_id ,因为它reserved word in mysql并且您可以省略其他反对。

此外,如果您还想显示references之类的行(未分类的推文),您可以使用LEFT JOIN instead of INNER JOIN;如果您允许每条推文进行多次分类,则可以使用GROUP BY (Aggregate) Functions可能会派上用场。

BTW:架构对象名称为PostgreSQL uses 1, 2, NULL, NULL,字符串为"