mysql - 将用户表加入内容表的正确方法?

标签 mysql join left-join

所以我有两个表。

一个存储用户,名为user:

id     date_joined      username
1      2014-12-12       UserA
2      2014-11-11       UserB

另一个存储内容,名为article:

id     user_id      date           content
1      1            2014-10-10     content here
2      1            2014-11-10     content here
3      2            2014-12-10     content here
4      1            2014-13-10     content here

查询此数据以获取每个用户的用户名和内容的正确方法是什么?

我目前有这个:

SELECT user.username, article.date, article.content
FROM article
LEFT JOIN user ON user.id = article.user_id
ORDER BY article.date

哪个可行,但完全是猜测。这是正确的查询吗?我需要所有元素中的 user.article. 吗?或者只是为了 LEFT JOIN 位?

那么这也是正确/推荐的吗?

SELECT username, date, content
FROM article
LEFT JOIN user ON user.id = article.user_id
ORDER BY date

最佳答案

只有在两者都有同名列的情况下,您才需要 table.column 语法。如果只有一个选项——没必要(尽管在我看来这样查询更清晰)

至于查询本身——这很好,但你需要知道一件事(并决定你想要什么,从你的问题中不清楚)——左连接或内连接。 inner join - 只会给你两个表中都存在的结果(即 - 如果 user_id 3 存在于 article 而不是 user - 你不会得到它。使用 left join - 在这种情况下你会得到 user_id 3 记录,其值为来自文章表,以及用户表列上的空值 所以这取决于需要决定哪个,但基本上你的查询没问题

关于mysql - 将用户表加入内容表的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32213770/

相关文章:

mysql - SQL按百分比获取相似的 "match"结果

php - 如何使用 mySQL 选择第一篇文章

linux - Bash 连接多个字段

用于查找本月最喜欢的视频的 MySQL 查询

MySQL SELECT 1 Parent 许多子值

sql - 当 PostgreSQL 中特定字段的平均值为空时如何分配零(0)

c++ - 在不使用MySQL的INSERT关键字的情况下使用C在MySQL中的表中插入一行

php - 如何合并两个结果?

mysql - 关于私有(private) MySQL 实例和 WordPress 的问题

sql - 将多个右连接重写为左连接