簡版會員私信表設計及sql 私信列表查詢

php小偷發表於2018-07-02

先上下表結構和資料

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的判斷操作。

 

相關文章