我想構建郵件系統,我想從表中選擇不同的值並按日期排序,並返回讀取和未讀狀態。我的表格結構是id, from_user_id, to_user_id, message, datetime, read
。假設虛擬數據如下:選擇與表格不同,並按日期排序
id | from_user_id | to_user_id | message | datetime | read
1 | 20 | 50 | hi | 2016-3-13 06:05:30 | 1
2 | 20 | 50 | hey | 2016-3-13 06:15:30 | 0
3 | 30 | 50 | hi | 2016-3-14 06:05:30 | 0
現在我要選擇不同的from_user_id
和按日期排序,這樣我可以顯示用戶的誰是最近茶亭在列表頂部的名稱,並返回讀狀態1 ,如果有from_user_id
的任何行已經讀取狀態0,那麼我想將read
返回爲0,以便我可以區分哪些用戶消息具有未讀消息。
假設,from_user_id
具有read
狀態爲0在一行中,那麼我想返回read
狀態爲0時返回不同的值from_user_id
。我該怎麼做。我嘗試如下,但不會在我的情況下工作。它返回不同的值,但不按日期排序,也讀取狀態不返回我所期望的。
select distinct(`from_user_id`),register.name FROM message INNER JOIN register ON register.id = message.from_user_id where message.to_user_id = $user_id GROUP BY message.id ORDER BY MAX(datetime) ASC
哇。它按預期工作。謝謝。 – user254153
請檢查更新後的sql小提琴。我也修改了查詢。請檢查此更新。 @ user254153 – 1000111
你的意思是,如果'to_user_id'和'datetime'對於兩行是相同的,它可能會返回多個'from_user_id'。但是,如何解決。我只想選擇不同的。 – user254153