RIGHT JOIN没有返回正确的行数

时间:2011-09-09 21:12:18

标签: mysql join

$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

的行数一样多的行

然而,无论如何只返回一行......你能告诉我它为什么会这样做吗?

1 个答案:

答案 0 :(得分:0)

右连接意味着将返回连接表中的所有行,右表中任何不匹配的行在左表中填充空值。

我认为没有理由不使用内连接?

您只返回一个值的原因是您要通过mr.threadid进行分组。如果所有行都有一个threadid = 1,则group by会将它们全部分组为一行。

我误解了这个问题吗?