需要查询帮助,以便从表中获取不同的记录。这是为了在收件箱区域显示。
SELECT DISTINCT(from_id),to_id,message,sent_date,status,message_status from messages where to_id='$mid'有了这个,我得到了from_id的两个记录
SSM5130 testing 7 December
SSM4228 testing 9 December
SSM4228 testing 7 December
SSM12 Hai 7 December
SSM5130 aaaaaaaaaaaaaaaaaaaaaa 6 December但我需要得到这样的东西。
SSM5130 testing 7 December
SSM4228 testing 9 December
SSM12 Hai 7 December我的数据库是这样的......
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发布于 2013-12-10 13:48:33
您需要按to_id对每一行进行排序,并为每个to_id组选择第一行。
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发布于 2013-12-10 13:22:34
我的猜测是您现有的from_id包含尾随空格。
使用以下查询:
select distinct (ltrim(rtrim(from_id))), to_id,message,sent_date,status,message_status
from messages
where to_id='$mid'https://stackoverflow.com/questions/20486577
复制相似问题