我有两个表:一个叫tweets
,一个叫references
。 tweets
包含行tweet_id
和classified
等。 references
由行tweet_id
和class_id
组成。
表tweet_id
中的行references
仅包含表tweet_id
中tweets
总数的一小部分。
我想要做的是组合这些表格,使最终表格显示行r.tweet_id
,t.classified
和r.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'
有人可以告诉我我做错了什么以及如何更改我的脚本以获得理想的结果?
答案 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
,字符串为"
。