首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从表中选择某一列具有不同值的行

从表中选择某一列具有不同值的行
EN

Stack Overflow用户
提问于 2011-09-29 19:49:09
回答 4查看 276关注 0票数 0

在我的基于线程的消息传递系统中,表模式是

代码语言:javascript
复制
> 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,发送者是登录的用户。

使用多个查询和一些代码显然可以做到这一点,但是否可以使用单个查询来解决性能问题??

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-29 19:54:26

你可以试试

编辑:

如果id是自动递增的,那么id也会随时间增加,您可以使用:

代码语言:javascript
复制
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>
票数 1
EN

Stack Overflow用户

发布于 2011-09-29 20:15:41

下面是我对你想要什么的最好的猜测,但是如果你给出了已知的输入,示例数据和期望的输出,它会更容易。

代码语言:javascript
复制
SELECT
    MR2.message_id
FROM (
    SELECT
        MR.sender,
        MR.receiver,
        M.MIN(`time`) AS min_time
    FROM
        Message_References MR -- Either use plural names (my personal preference) or singular, but don't mix them
    INNER JOIN Messages M ON
        M.id = MR.message_id
    WHERE
        MR.sender = <sender>
    GROUP BY
        MR.received) SQ
INNER JOIN Message_References MR2 ON
    MR2.sender = SQ.sender AND
    MR2.receiver = SQ.receiver AND
    MR2.`time` = SQ.min_time
票数 0
EN

Stack Overflow用户

发布于 2011-09-29 22:32:12

代码语言:javascript
复制
select mr.message_id from
  message_reference as mr inner join 
    (select mr1.reciever max(m1.time) as time from messages as m1
       inner join message_reference as mr1 on mr1.message_id = m1.id
       group by mr1.reciever) as last
    on mr.reciever = last.reciever and mr.time = last.time

将消息引用与接收者和时间上的“每个接收者的最大时间”表连接起来

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7596879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档