先上下表結構和資料
DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT `會員私信`, `from_uid` int(255) NOT NULL DEFAULT `0` COMMENT `傳送者`, `to_uid` int(255) NOT NULL DEFAULT `0` COMMENT `接受者`, `flg` int(11) NOT NULL DEFAULT `0` COMMENT `狀態 0:未讀 1 : 已讀`, `content` varchar(255) NOT NULL DEFAULT `` COMMENT `內容`, `createtime` datetime NOT NULL COMMENT `建立時間`, PRIMARY KEY (`id`), KEY `idx_uid` (`from_uid`), KEY `to_uid` (`to_uid`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of jzhs_mssage -- ---------------------------- INSERT INTO `message` VALUES (`10`, `1`, `2`, `0`, `aaaaa`, `0000-00-00 00:00:00`); INSERT INTO `message` VALUES (`11`, `2`, `1`, `0`, `bbbbb`, `0000-00-00 00:00:00`); INSERT INTO `message` VALUES (`12`, `1`, `3`, `0`, `ccccc`, `0000-00-00 00:00:00`);
查詢的目的為 獲取本表中私信列表,內容取私信的最後一條。從網上找了很多方法,但是看著比較麻煩。所以採取了一個非常菜的寫法,也總算完成了目的。
強烈歡迎各位大神來指正和交流!!
輸出內容如下
from_uid
|
to_uid
|
flg
|
content
|
createtime
|
2 | 1 | 0 | bbbbb | |
1 | 3 | 0 | ccccc |
執行sql:
SELECT from_uid,to_uid,content,createtime,if(from_uid>to_uid,CONCAT(from_uid,`_`,to_uid),CONCAT(to_uid,`_`,from_uid)) as groups FROM message GROUP BY groups ORDER BY id DESC
主要目的為,已from_uid、to_uid兩個欄位的進行分組查詢。前提為這兩個是int型別,方便做if的判斷操作。