我有两张表:一张叫做tweets
,一张叫做references
。 tweets
由行 tweet_id
和 classified
等组成。 references
由行 tweet_id
和 class_id
组成。
references
表中的 tweet_id
行仅占 tweets< 表中总
.tweet_id
的一小部分
我想做的是以最终表显示行 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'
有人可以告诉我我做错了什么以及我应该如何更改我的脚本以获得预期的结果吗?
最佳答案
Mysql 使用反引号 `
到 escape schema object names (列、表、数据库)和撇号 '
和引号 "
到 escape strings 所以你正在比较字符串 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
请注意,您必须转义单词 references
因为它是 reserved word in mysql您可以省略其他反引号。
此外,如果您还想显示像 1, 2, NULL, NULL
这样的行(未分类的推文),您可以使用 LEFT JOIN
instead of INNER JOIN
;如果你允许每条推文有多个分类,一些 GROUP BY (Aggregate) Functions可能会派上用场。
顺便说一句:PostgreSQL uses "
用于架构对象名称,'
用于字符串。
关于mysql - 在 SQL 的一个输出中组合表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594677/