简版会员私信表设计及sql 私信列表查询

先上下表结构和数据

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

猜你喜欢

转载自www.cnblogs.com/xiaobing007/p/9253573.html
今日推荐