$sql="SELECT MAX(mr.messageId) AS maxMessageId, mr.threadId
FROM messages_recipients AS mr
RIGHT JOIN thread_recipients AS tr ON tr.threadId=mr.threadId
WHERE mr.recipientUserId='2'
GROUP BY mr.threadId";
如果上面的SELECT应该在messageIcipients中找到一行,其threadId为1 和threads_recipients有多行,threadId = 1 .. 然后因为我有一个正确的加入, 我希望它返回与thread_recipients中threadId = 1
的行数一样多的行然而,无论如何只返回一行......你能告诉我它为什么会这样做吗?
答案 0 :(得分:0)
右连接意味着将返回连接表中的所有行,右表中任何不匹配的行在左表中填充空值。
我认为没有理由不使用内连接?
您只返回一个值的原因是您要通过mr.threadid进行分组。如果所有行都有一个threadid = 1,则group by会将它们全部分组为一行。
我误解了这个问题吗?