在基于线程的消息传递系统中,表架构为
> messages table
id(int auto incr primary key)
body(varchar)
time(datetime)
>message_reference table
id(int auto incr primary key)
message_id(forgain key from message table)
sender
receiver
在这里,我要选择发送到新接收者的第一个消息ID,发送者是已登录的用户。
显然可以通过多个查询和一些代码来执行此操作,但是可以通过单个查询来解决性能问题吗?
最佳答案
你可以试试
编辑:
如果id是自动递增的,则id也会随着时间增加,您可以使用:
SELECT message_reference.message_id, message_reference.receiver, messages.body
FROM message_reference, messages
WHERE message_reference.message_id IN (SELECT MIN(message_reference.message_id)
FROM message_reference
GROUP BY message_reference.receiver)
AND message_reference.message_id = messages.id AND message_reference.sender = <sender>
关于mysql - 从表中选择具有不同列值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7596879/