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

标签 mysql sql join

我有两张表:一张叫做tweets,一张叫做referencestweets 由行 tweet_idclassified 等组成。 references 由行 tweet_idclass_id 组成。

references 表中的 tweet_id 行仅占 tweets< 表中总 tweet_id 的一小部分.

我想做的是以最终表显示行 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'

有人可以告诉我我做错了什么以及我应该如何更改我的脚本以获得预期的结果吗?

最佳答案

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/

相关文章:

mysql - 将属性附加到 MySQL 中的 JSON 对象

java - MySQL:更新表列,同时将日期格式格式化为其他格式不起作用

mysql - Django 选择其中字段是字符串和列值的串联

BASH:根据公共(public)字段名称加入 2 个 CSV 文件

android - 连接mySQL数据库与android

sql - 如何获取 PostgreSQL 中每个用户的最后编辑帖子?

sql - 为 sp_xml_preparedocument 配置 namespace

mysql - mysql如何连接两个表

java - 具有急切加载问题的 Hibernate 多对多

mysql - MySQL 中何时使用单引号、双引号和反引号