求SQL语句 100

table:user(id,name)table:friend_ship(user_id,friend_id,relation)table:chat_message(fr... table: user(id,name)
table:friend_ship(user_id,friend_id,relation)
table:chat_message(from_id,to_id,text,createDate,unread)//unread 未读消息

其中 from_id,to_id,user_id,friend_id 都是user表中的id
求怎样查询最近10个好友的的消息(relation==1),及未读消息数量(unread == true),及最新的一条消息
friend_id ,friend_name ,unread_count ,msg_text, msg_date
1 ,jason, 10, "在" 2015-12-12

(若可以,假如去掉friend_ship 表,以存在聊天记录,表示是好友,又怎么查询)
展开
 我来答
暗影之王01
2015-09-11 · TA获得超过5.6万个赞
知道大有可为答主
回答量:2万
采纳率:29%
帮助的人:4733万
展开全部
1、说明:创建数据库
Create DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\MyNwind_1.dat‘
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料。
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
来学习的DBA
2015-04-07 · TA获得超过298个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:211万
展开全部
你问题说得不是很清楚,你看看下面sql
select * from (select * from (select f.friend_id,u.name,10,c.text,c.createDate
from user u,friend_ship f,chat_message c where
u.id=f.user_id and u.id=f.friend_id and
u.id=c.from_id and u.id=c.to_id and
f.relation=1 and f.unread=true) order by createDate desc)
where rownum <=10;
你第二个问题,看起来很简单呀,但是我不知道你是不是问的这个问题

select name from user where id in (select to_id from chat_message);
追问
额,表示我描述的有歧义。大概实现这样的功能
像qq聊天列表中显示好友的最近的一条聊天记录(可能是自己发送的,或者是从好友发送的),以及要查到好友的相关信息,及未读消息数量。数据库刚开始学(我目前是冗余出了一张表 来存储最新的一条消息)。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式