简版会员私信表设计及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的判断操作。