请问怎样写这样的sql。。。

lxh007 2001-09-18 12:09:20
在sqlserver中,我要的意思呢用下面一条条单独的sql语句表达
select top 1 * from 同一个表 where 条件1 order by 时间字段 desc
.....
.....
select top 1 * from 同一个表 where 条件i order by 时间字段 desc
条件是个记录集,现在我怎么把他们合并写成一条?
...全文
136 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nononono 2001-09-18
  • 打赏
  • 举报
回复
用union吧:

select top 1 * from table1 where 字段 in (变量1,变量2,变量3) order by KEY
union
select top 1 * from table2 where 字段 in (变量1,变量2,变量3) order by KEY
union
select top 1 * from table3 where 字段 in (变量1,变量2,变量3) order by KEY
...

是不是这个意思?
lxh007 2001-09-18
  • 打赏
  • 举报
回复
to tccb(tccb)我还是不太明白
比如我查询的条件是个数组变量 where 字段 in (变量1,变量2,变量3)
我要从每个满足条件的记录集中取出最新的一个值,怎么写?望指点。。。
tccb 2001-09-18
  • 打赏
  • 举报
回复
1、用 where conditions or conditions or ... 把条件或运算
2、用 union 将 select 连接起来 eg: select ... union select ... union select ...
lxh007 2001-09-18
  • 打赏
  • 举报
回复
to:KingSunSha(弱水三千) 
非常正确,谢谢!
KingSunSha 2001-09-18
  • 打赏
  • 举报
回复
因为对用一个报汛站来说,不存在时间字段相同的纪录, 所以可以这样写:

select x.水库, y.报汛站, z.降雨量
from 表1 x, 表2 y, 表3 z
where z.报汛站=y.报汛站
and y.水库=x.水库
and x.水库 in (一个数组变量)
and z.时间字段 in (Select max(时间字段)
from 表3
where 报汛站 = z.报汛站);
测试通过.
hxflx 2001-09-18
  • 打赏
  • 举报
回复
1.create table table db_name (字段与各报讯站设表结构相同)
2.insert into db_name
select top 1 * from 同一个表 where 条件1 order by 时间字段 desc
3.insert into db_name
select top 1 * from 同一个表 where 条件i order by 时间字段 desc
总之, 建一临时表db_name, 把各报讯站最新一条信息分别插入到db_name,使用时直接查临时表.
lxh007 2001-09-18
  • 打赏
  • 举报
回复
up
lxh007 2001-09-18
  • 打赏
  • 举报
回复
可以说是vb,是用asp,用表格形式显示查询出的所有记录!
nononono 2001-09-18
  • 打赏
  • 举报
回复
你的数组不是在sql中, 是vb么? 在vb中生成这个sql, 然后送到SQL中执行.
nononono 2001-09-18
  • 打赏
  • 举报
回复
看你的意思, 还是下面这样:

select top 1 * from table1 where 条件1 order by KEY
union
select top 1 * from table1 where 条件2 order by KEY
union
select top 1 * from table1 where 条件3 order by KEY
...
lxh007 2001-09-18
  • 打赏
  • 举报
回复
我在详细说一下:
表1:水库;表2:报汛站,表3:各报汛站的降雨量信息
关系是:一个水库对应多个报汛站,每个报汛站每天都会录入一条降雨量的信息
现在用户可以选择多个水库,然后显示各个水库对应的所有的报汛站的最新的一条记录,怎么写?
条件是:where 表3.报汛站=表2.报汛站 and 表2.水库=表1.水库 and 表1.水库 in (一个数组变量) order by 时间 desc 就这样,我怎么select....?
smartdonkey 2001-09-18
  • 打赏
  • 举报
回复
这样吧,首先建立一个临时表:
create #tt(col1 int)
将你的条件数组得值放到#tt中,然后
select * form mytable t1 where date>=all(select date from mytable t2 where t2.id=t1.id) and 您的字段 in (select col1 from #tt)

--请将您的问题仔细说清楚,给出结构和目的结果,会更好些解决
lxh007 2001-09-18
  • 打赏
  • 举报
回复
to:nononono(null,null) 
每个top1都是不同的条件的
是这样的,取出满足条件1的所有记录中最新的记录,取出满足条件2的所有记录中最新的记录。。。。,而现在条件是动态的,但存在一个数组变量中,所以没办法分成n条sql语句,该怎么办?
lxh007 2001-09-18
  • 打赏
  • 举报
回复
to:nononono(null,null) 
每个top1都是不同的条件的
是这样的,取出满足条件1的所有记录中最新的记录,取出满足条件2的所有记录中最新的记录。。。。,该怎么办?

34,871

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧