【发布时间】:2019-03-28 06:52:47
【问题描述】:
我正在尝试进行一个从两个表中检索数据的简单查询。一个表 ForumPosts 保存与论坛中的帖子有关的数据,另一个表 Users 保存有关我系统上用户的数据。
我遇到的问题是,当我想收集有关哪些用户发布了哪些帖子的数据时。
这是我的桌子:
mysql> select * from ForumPosts;
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
| ID | UserID | Title | Post | ImgFile | SubmissionTime |
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
| 1 | 1 | More tests | tests... | NULL | 2019-02-26 01:39:28 |
| 2 | 2 | Another test post | tests... | NULL | 2019-02-26 22:52:26 |
| 3 | 1 | Test post | tests… | NULL | 2019-03-27 22:10:38 |
+----+--------+-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------------+
mysql> select * from Users;
+----+----------------+----------+----------+---------------------+
| ID | Email | UserName | Password | DateRegistered |
+----+----------------+----------+----------+---------------------+
| 1 | test@test.com | tester | dank | 2019-02-26 22:43:26 |
| 2 | test2@test.com | 2tester | dank | 2019-02-26 22:43:26 |
+----+----------------+----------+----------+---------------------+
我曾尝试查看其他一些帖子,例如: Simple MySQL Join to replace foreign key 他们似乎都和我有同样的问题,但我似乎找不到我的解决方案有什么问题。
这是我当前正在使用的查询。
select
Title,
Users.ID as Author,
SubmissionTime as Posted
from ForumPosts
left join
Users on ForumPosts.UserID = Users.ID
order by SubmissionTime desc;
但是返回的是这样的:
mysql> select
-> Title,
-> UserId as Author,
-> SubmissionTime as Posted
-> from ForumPosts
-> left join
-> Users on ForumPosts.UserID = Users.ID
-> order by SubmissionTime desc;
+-----------------------------------------------------------------------------+--------+---------------------+
| Title | Author | Posted |
+-----------------------------------------------------------------------------+--------+---------------------+
| Test post | 1 | 2019-03-27 22:10:38 |
| Another test post | 2 | 2019-02-26 22:52:26 |
| More tests | 1 | 2019-02-26 01:39:28 |
+-----------------------------------------------------------------------------+--------+---------------------+
结果列出了用户的外键,但我想要他们关联的用户名。
我觉得这应该是一个非常简单的修复,但我似乎找不到它。
【问题讨论】:
-
如果你想要用户名,那么这就是你应该放在选择列表中的内容,而不是id......这与外键无关。