首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于获取不同记录的sql

用于获取不同记录的sql
EN

Stack Overflow用户
提问于 2013-12-10 13:09:15
回答 2查看 86关注 0票数 0

需要查询帮助,以便从表中获取不同的记录。这是为了在收件箱区域显示。

代码语言:javascript
运行
复制
SELECT DISTINCT(from_id),to_id,message,sent_date,status,message_status from messages where to_id='$mid'

有了这个,我得到了from_id的两个记录

代码语言:javascript
运行
复制
SSM5130     testing         7 December
SSM4228     testing         9 December
SSM4228     testing         7 December
SSM12       Hai             7 December
SSM5130     aaaaaaaaaaaaaaaaaaaaaa      6 December

但我需要得到这样的东西。

代码语言:javascript
运行
复制
SSM5130     testing         7 December
SSM4228     testing         9 December
SSM12       Hai             7 December

我的数据库是这样的......

代码语言:javascript
运行
复制
mes_id  to_id   from_id message                 date                read_status message_status
----------------------------------------------------------------------------------------------
1       SSM11   SSM13   dfsdfsfsfsdfsdfsd       2013-12-06 10:49:44 1           0
2       SSM11   SSM5130 aaaaaaaaaaaaaaaaaaaaaa  2013-12-06 10:52:01 1           0
3       SSM11   SSM5130 aaaaaaaaaaaaaaaaaaaaaa  2013-12-06 10:52:14 1           0
4       SSM11   SSM4228 aaaaaaaaaaaaaaaaaaaaaa  2013-11-01 09:30:30 1           0
41      SSM11   SSM12    Hai                    2013-12-07 12:50:13 1           0
43      SSM11   SSM5130 aaaaaaaaaaaaaaaaaaaaaa  2013-11-07 09:30:30 1           0
44      SSM11   SSM100  aaaaaaaaaaaaaaaaaaaaaa  2013-11-07 09:30:30 1           0
46      SSM11   SSM5130 testing                 2013-12-09 15:16:25 1           1
47          SSM5130   SSM11 testing                 2013-12-09 15:16:25     1           1
EN

回答 2

Stack Overflow用户

发布于 2013-12-10 13:48:33

您需要按to_id对每一行进行排序,并为每个to_id组选择第一行。

代码语言:javascript
运行
复制
SELECT
    t.mes_id,
    t.to_id,
    t.from_id,
    t.message,
    t.date,
    t.read_status,
    t.message_status
FROM
    (SELECT
        @row_num := IF(@prev_value=o.to_id, @row_num + 1, 1) AS RowNumber,
        @prev_value := o.to_id,
        o.*
    FROM
        my_table o,
        (SELECT @row_num := 1) X, (SELECT @prev_value := '') Y
    ORDER BY
        o.to_id) t
 WHERE RowNumber = 1
票数 1
EN

Stack Overflow用户

发布于 2013-12-10 13:22:34

我的猜测是您现有的from_id包含尾随空格。

使用以下查询:

代码语言:javascript
运行
复制
select distinct (ltrim(rtrim(from_id))), to_id,message,sent_date,status,message_status
  from messages
 where to_id='$mid'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20486577

复制
相关文章

相似问题

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