我有兩個表,users
和messages
。如何製作這個特定的MySQL查詢?
users
具有字段userId
(int)和username
(字符串)和 messages
具有字段userId
(int)和message
。
我有用戶名,並希望獲取與該用戶名的所有消息userId
。
在這種情況下,連接函數會起作用嗎(如果是這樣,怎麼辦?),還是我必須做兩個單獨的查詢?
我有兩個表,users
和messages
。如何製作這個特定的MySQL查詢?
users
具有字段userId
(int)和username
(字符串)和 messages
具有字段userId
(int)和message
。
我有用戶名,並希望獲取與該用戶名的所有消息userId
。
在這種情況下,連接函數會起作用嗎(如果是這樣,怎麼辦?),還是我必須做兩個單獨的查詢?
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
它工作完美,謝謝。 – mb595x
@ mb595x:不客氣,不要忘記接受答案。 ;-) –
SELECT U.userId, M.message
FROM users AS U INNER JOIN messages AS M ON U.userId = M.userId
WHERE U.username = 'UserName'
只需將您想要的用戶名插入WHERE子句。
當你可以使用用戶ID而不是用戶名時,看起來好像很長一段時間 - 你不想使用它的任何特殊原因? – BenOfTheNorth
我將用戶名設置爲會話變量,以便我可以識別誰在該會話中登錄,並且能夠在需要時顯示他們的用戶名。如果我使用userId作爲會話變量,我將不得不創建一個查詢來獲取用戶名來顯示它。 這不是一個好方法嗎?將我的userId作爲第二個會話變量添加會更好嗎? – mb595x
是的,我會 - 我想你會使用用戶ID比用戶名更多,所以已經有了它可用。 – BenOfTheNorth