Mysql 右连接未返回正确的行数 $sql=“选择MAX(mr.messageId)作为maxMessageId,mr.threadId 来自作为mr 在tr.threadId=mr.threadId上以tr的身份右键连接线程\u收件人 其中recipientUserId='2' threadId先生分组”;

Mysql 右连接未返回正确的行数 $sql=“选择MAX(mr.messageId)作为maxMessageId,mr.threadId 来自作为mr 在tr.threadId=mr.threadId上以tr的身份右键连接线程\u收件人 其中recipientUserId='2' threadId先生分组”;,mysql,join,Mysql,Join,如果上述选择应在邮件收件人中找到threadId为1的行 并且线程\u收件人有多个threadId为1的行。。 然后因为我有权利加入, 我希望它返回的行数与threadId=1的thread_recipients中的行数相同 然而,不管怎样,它只返回一行。。。您能告诉我它为什么这样做吗?右联接意味着将返回联接表中的所有行,右表中任何不匹配的行在左表中填充为空 我看不出为什么不使用内部联接 您只返回一个值的原因是您正在按mr.threadid进行分组。如果所有行的threadid=1,则group

如果上述选择应在邮件收件人中找到threadId为1的行 并且线程\u收件人有多个threadId为1的行。。 然后因为我有权利加入, 我希望它返回的行数与threadId=1的thread_recipients中的行数相同


然而,不管怎样,它只返回一行。。。您能告诉我它为什么这样做吗?

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

我看不出为什么不使用内部联接

您只返回一个值的原因是您正在按mr.threadid进行分组。如果所有行的threadid=1,则group by会将它们全部分组到一行中


我误解了这个问题吗?

谢谢@Martin Nielson。那么,我该如何使查询工作,以便它能够选择表thread_recipients中的所有行,其中tr.threadId=mr.threadId,同时按mr.threadId分组以获取maxMessageId。。。非常感谢你的持续支持。。你到底想返回什么。不要在意行的id等等,你想完成什么?