消息表(消息ID,消息标题,消息内容,发送用户ID,发送时间)标识表(用户ID,消息ID,是否阅读,是否删除)如何才能高效的打印出未在标示表中出现的消息呢?
解决方案 »
- 错误1045 (28000): Access denied for user 'root'@'localhost'?
- Mysql 存储过程中 游标使用遇到问题了
- mysql汉字丢失
- SQLYog企业版怎么连接内网mysql数据库?
- 【在线等】请问如何查询最近生日的用户?谢谢,立即结贴~
- postgres的备份问题
- 错误代号:2006 mysql server has gone away
- 请问使用mysql时,大家都用什么样的建模工具呢?
- 服务器 数据库均衡,是什么意思
- mysql 的sql语法错误提示能智能一些吗?
- innodb类型的表在服务器上打不开了,如果用frm源文件恢复回来?
- 求这样的SQL语句
from 消息表 a inner join 标识表 b on a.消息ID=b.消息ID
where b.是否阅读='N'创建索引 on 标识表(是否阅读,消息ID)
只要在标识表里出现的就代表已读,未在标识表里出现就表示未读
from 消息表 a inner join 标识表 b on a.消息ID=b.消息ID
where b.是否阅读 is null
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
tab1
id title content userid touserid
1 abc def 0 0
2 abc def 0 0userid = 0 表示系统信息
touserid = 0 表示所有用户
表 tab2 标示表
tab2
id del tab1_id userid
1 0 1 1
2 0 2 2上面这样的应该是
userid 1 已读了 id为1的消息 未读id为2的消息
userid 2 已读了 id为2的消息 未读id为1的消息
from 消息表
where touserid=0 or touserid=1
and id not in (select tab1_id from 标示表 where userid=1)
建议楼主花3分钟看一下这篇贴子中的高效的提问方式。
http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html