2012-09-23 28 views
2

我有兩個表,usersmessages如何製作這個特定的MySQL查詢?

users具有字段userId(int)和username(字符串)和 messages具有字段userId(int)和message

我有用戶名,並希望獲取與該用戶名的所有消息userId

在這種情況下,連接函數會起作用嗎(如果是這樣,怎麼辦?),還是我必須做兩個單獨的查詢?

+0

當你可以使用用戶ID而不是用戶名時,看起來好像很長一段時間 - 你不想使用它的任何特殊原因? – BenOfTheNorth

+0

我將用戶名設置爲會話變量,以便我可以識別誰在該會話中登錄,並且能夠在需要時顯示他們的用戶名。如果我使用userId作爲會話變量,我將不得不創建一個查詢來獲取用戶名來顯示它。 這不是一個好方法嗎?將我的userId作爲第二個會話變量添加會更好嗎? – mb595x

+1

是的,我會 - 我想你會使用用戶ID比用戶名更多,所以已經有了它可用。 – BenOfTheNorth

回答

5
SELECT  m.* 
FROM   messages m 
    INNER JOIN users u 
    ON   m.userId = u.userId 
WHERE  u.username = 'UsernameHere'; 

使用一個INNER JOIN至(它們二者通過userId列匹配[引用])

和查詢的一個例子從messages表引用user表可以在這裏找到:http://www.sqlfiddle.com/#!8/bc3ce/3/0

+0

它工作完美,謝謝。 – mb595x

+0

@ mb595x:不客氣,不要忘記接受答案。 ;-) –

3
SELECT U.userId, M.message 
FROM users AS U INNER JOIN messages AS M ON U.userId = M.userId 
WHERE U.username = 'UserName' 

只需將您想要的用戶名插入WHERE子句。