如何进行这个特定的MySQL查询?

如何进行这个特定的MySQL查询?,mysql,sql,Mysql,Sql,我有两个表,用户和消息 users具有字段userId(int)和username(string)以及 messages包含userId(int)和message字段 我有用户名,想抓取与该用户名的userId相关的所有消息 在这种情况下,join函数是否可以工作(如果可以,如何工作?),或者我必须进行两个单独的查询 SELECT m.* FROM messages m INNER JOIN users u ON m.userId = u.us

我有两个表,
用户
消息

users
具有字段
userId
(int)和
username
(string)以及
messages
包含
userId
(int)和
message
字段

我有用户名,想抓取与该用户名的
userId
相关的所有消息

在这种情况下,join函数是否可以工作(如果可以,如何工作?),或者我必须进行两个单独的查询

SELECT       m.*
FROM         messages m
  INNER JOIN users u
  ON         m.userId = u.userId
WHERE        u.username = 'UsernameHere';
使用
内部联接
消息
表中引用
用户
表(通过
用户ID
列匹配[引用]它们)

以下是查询的一个示例:


只要在WHERE子句中插入您想要的用户名。

如果您可以使用用户ID而不是用户名,那么这似乎是一个漫长的过程-您有什么特别的原因不想使用它吗?我将用户名设置为会话变量,这样我就可以识别谁登录了该会话,并且可以在登录时显示他们的用户名需要。如果我使用userId作为会话变量,我必须创建一个查询来获取用户名以显示它。这不是一个好办法吗?将用户ID添加为第二个会话变量会更好吗?是的,我会-我想您将使用的用户ID比用户名多得多,因此有必要使用它。@mb595x:通常您有一个“会话对象”,它是用户ID、名称的汇编,可能是UI呈现的缓存权限,以及其他一些通常有用的信息。我只是退一步看了看更大的图景,意识到我在很多地方都需要用户ID,所以我想我会这样做。感谢本和布拉德的大力帮助@mb595x:不客气,别忘了接受答案。;-)
SELECT U.userId, M.message
FROM users AS U INNER JOIN messages AS M ON U.userId = M.userId
WHERE U.username = 'UserName'