2012-03-18 74 views
0

我試圖找出這一點,沒有運氣。我不斷得到一些奇怪的結果!首先,我有一個MySQL數據庫的一些行,該結構是這樣的,group_by和order_by與codeigniter

ID MESSAGE_ID 消息 TIME 日期現在

,該MESSAGE_ID可以是相同的多次,這是我的問題開始的地方。我想通過ID選擇最後一行復制的message_ID的排序。

所以,讓我們說我有一個正常的GET請求,結果是這樣的,

Array 
(
    [0] => Array 
     (
      [id] => 3 
      [message_id] => 1 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => last 
      [time_sent] => 1331874924 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [message_id] => 1 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => middle 
      [time_sent] => 1331874920 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

    [2] => Array 
     (
      [id] => 1 
      [message_id] => 1 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => first 
      [time_sent] => 1331874916 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

    [3] => Array 
     (
      [id] => 4 
      [message_id] => 2 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => test 
      [time_sent] => 1331874916 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

) 

現在,我想要什麼,是去除dubplicated MESSAGE_ID的,只有得到這個(注意如何應該由ID)

Array 
(
    [0] => Array 
     (
      [id] => 3 
      [message_id] => 1 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => last 
      [time_sent] => 1331874924 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

    [1] => Array 
     (
      [id] => 4 
      [message_id] => 2 
      [from_user_id] => 3 
      [to_user_id] => 1 
      [message] => test 
      [time_sent] => 1331874916 
      [date_sent] => 16/03/2012 
      [opened] => 0 
      [ip] => ::1 
      [deleted] => 0 
      [reported] => 0 
     ) 

) 

下訂單我一直試圖做之前,

$this->db->order_by(‘id’, ‘DESC’); 
$this->db->group_by(‘message_id’); 

$this->db->group_by(‘message_id’); 
$this->db->order_by(‘id’, ‘DESC’); 

,但我沒有得到來自MESSAGE_ID的最新成果,只有第一個(看起來像它不刪除或某件事之前soring?)

任何幫助將是巨大的!

+0

'SELECT * FROM table GROUP BY message_id ORDER BY id ASC;' – hjpotter92 2012-03-18 16:13:26

+0

你想要結果id是按升序還是降序? – 2012-03-18 16:18:44

+0

我做了hjpotter92,$ this-> db-> group_by('message_id')AND $ this-> db-> order_by('id','ASC');但是如果我使用ASC或DESC,無論如何我都會得到第一個ID(ID = 1),看起來它並不像我在第一篇文章中所說的那樣排序。 – 2012-03-18 16:20:48

回答

0

我成功了,與此對我的表:

select * from 
    (select * from da_user_messages order by id desc) t 
where receiver=1 group by msg_session 
你的情況msg_session

是MESSAGE_ID,接收器to_user_id和da_user_messages是你的表名。

+0

這應該爲什麼tpaksu? – 2012-03-18 16:32:44

+0

我的意思是不同的message_id。你爲什麼認爲這不起作用? (現在更正我的答案。) – 2012-03-18 16:37:27

+0

那麼我仍然會得到很多重複ID的? – 2012-03-18 16:45:55