求一SQL语句~一直没搞明白!
比如说,我两张表
表A是一个企业的基本信息表
字段:
id cor_id cor_name
表B是企业发送消息的列表
id cor_id message
两张表用企业用户名相关联 ,cor-id相管理
我如何查询出最新15个发送消息的企业的名称呢?
比如说,我两张表
表A是一个企业的基本信息表
字段:
id cor_id cor_name
表B是企业发送消息的列表
id cor_id message
两张表用企业用户名相关联 ,cor-id相管理
我如何查询出最新15个发送消息的企业的名称呢?
15 个企业名中的重复情况要不要判断。
B表有没有updatatime
select cor_name form [dbo].[A] where [cor_id] = (select top 9 cor_id form [dbo].[B] ORDER BY updatatime DESC)
上面两个条件都满足的话,这一句SQL就可以完成了
哦,TOP 15
肯定不需要重复的啊~
select cor_name form [dbo].[A] where [cor_id] = (select top 9 cor_id form [dbo].[B] ORDER BY updatatime DESC)
是不是有重复的啊?
select top 15 cor_name from A where cor_id in (select top 15 cor_id from B order by id desc)
是不是需要聚合一下呢?
可是聚合了就不能用 order by
select top 15 a.cor_name from (select 表A.cor_name,表B.id from 表A,表B where 表A.cor_id=表B.cor_id order by 表B.id desc) as a order by a.id desc
可能有点错误,改改!
select top 15 A.cor_name from A,B where A.cor_id=B.cor_id group by A.cor_name order by B.uptime(时间) desc
试一下,看对不对,不过第二个表里得有发送信息的时间,
还有,你查一下DISTINCT的语法,看能不能用
SELECT DISTINCT TOP 15 A.[cor_name] FROM A INNER JOIN B ON A.[cor_id] = B.[cor_id] ORDER BY B.[updatetime] DESC
zrqgood(梦欣) group by A.cor_name order by B.uptime(时间) desc 这样好象不能一起用啊~
这个
select top 15 a.cor_name from (select 表A.cor_name,表B.id from 表A,表B where 表A.cor_id=表B.cor_id order by 表B.id desc) as a order by a.id desc
怎么有问题啊?
既然是15个不同企业,那就按企业汇总。最新,那就按汇总后的消息的ID排列。消息的ID是自动增长的。ID大的就是应该是最新的,也不要考虑有没有uptime
select top 15 a.corname from A a,B b where a.cor_id=b.cor_id group by corname order by max(b.id)
还是实现不了啊~
group by 和 order by 什么时候才能一起用啊?
应该需要加一个更新时间的吧?
已经有更新时间的字段了~
select top 15 a.corname from 表A a,表B b where b.cor_id=a.cor_id order by b.id desc
不用group by
要不然就用
select top 15 * from 表A where cor_id in (select DISTINCT(cor_id) from 表B order by cor_id)
思路就是这样,可能里面还要修改一下,我没有环境,没有测试过
SELECT cor_name FROM cor WHERE cor_id IN (SELECT TOP 3 cor_id FROM mes GROUP BY cor_id ORDER BY MAX(ID) DESC)
如果除了cor_name外还要其它字段,请将in的子查询改写为连接就可以了.
楼上厉害,这样也可以哦,先取CORid出来,再关联名称
1. B 表中得有时间字段,不然不好定义新15条
Select top 15 b.cor_id,b.message
from tabel1 a join table2 b on a.cor_id=b.cord_id
order by time desc
1. B 表中得有时间字段,不然不好定义新15条
Select top 15 b.cor_id,b.message
from tabel1 a join table2 b on a.cor_id=b.cord_id
order by b.time desc