A. sql 上下两条数据何为一条数据
SELECTQ.ID,Q.NAME,Q.A1作用,E.A1原则,T.A1数据,A2作用,R.A2原则,Y.A2数据,U.作用合,I.原则合,O.数据合FROM
((((((((SELECTID,NAME,ZYASA1作用FROMA
WHEREYT='A1')ASQJOIN(SELECTID,ZYASA2作用FROMA
WHEREYT='A2')ASWONQ.ID=W.ID)JOIN(SELECTID,YZASA1原则FROMA
WHEREYT='A1')ASEONQ.ID=E.ID)JOIN(SELECTID,YZASA2原则FROMA
WHEREYT='A2')ASRONQ.ID=R.ID)JOIN(SELECTID,SJASA1数据FROMA
WHEREYT='A1')ASTONQ.ID=T.ID)JOIN(SELECTID,SJASA2数据FROMA
WHEREYT='A2')ASYONQ.ID=Y.ID)JOIN(SELECTID,SUM(ZY)AS作用合FROMA
GROUPBYID)ASUONQ.ID=U.ID)JOIN(SELECTID,SUM(YZ)AS原则合FROMA
GROUPBYID)ASIONQ.ID=I.ID)JOIN(SELECTID,SUM(SJ)AS数据合FROMA
GROUPBYID)ASOONQ.ID=O.ID
B. 怎样根据一条已有的sql语句查询这条语句的上下一条数据
这要看你所谓的上一条数据、下一条数据和当前数据之间是否存在可明确量化的关系,比如数据库中某个字段记录了各人的考试名次:id name url sex rank1 小明 第一中学 男 4
2 小华 第二中学 男 2
3 小毛 第三中学 男 1
4 小雪 第四中学 女 3已知小华考了第2名,要找出第1名和第3名的:select * from [user] where rank=2 or rank=1 or rank=3 order by rank这样找出的记录中第二条记录是你所谓的当前数据,而第一条和第三条则分别是上一条和下一条数据。但这种情况并不适用于你所说的情况,因为按性别“男”查出的多条记录,并没有明确的可以用+1和-1(或者+n和-n)来区分其上下关系的方法(而按ID来区分是不行的,仔细想想就明白为什么)。可以这样来折中处理:rs.open "SELECT * FROM [user] WHERE sex like '男' ORDER BY id DESC",conn,1,1rs.find "name='小华'" '定位到小华这条记录......bmk=rs.bookmark '把当前记录位置保存起来
rs.moveprevious '定位到上一条记录......rs.bookmark=bmk '恢复当前记录位置
rs.movenext '定位到下一条记录
......
C. 请教一段能同时查出上一条记录及下一条记录的SQL
如果有主键自增或者按时间排序的数据库记录的话
直接根据当前的记录的主键或时间,大概可以这样写
(select * from table where id > 当前id order by id asc limit 1 ) union
(select * from table where id < 当前id order by id desc limit 1)
这样差不多能满足
D. 关于查询sql中数据上一条记录和下一条记录的sql语句......
可用row_number来解决。
如student表
id name create_date
1 张三 2015-07-01
2 李四 2015-06-01
3 王五 2015-08-01
4 赵六 2015-04-01
如,要查找张三的create_date前和后各一条数据。
withtas
(selectstudent.*,row_number()over(orderbycreate_date)rnfromstudent)
select*fromstudentwherern=(selectt.rn+1fromtwheret.name='张三')
unionall
select*fromstudentwherern=(selectt.rn-1fromtwheret.name='张三')
结果应是:
id name create_date
2 李四 2015-06-01
3 王五 2015-08-01
E. 谁给我写个sql语句:关于上一条记录和下一条记录的对比
select b.*,
(case when (b.s_time-a.s_time)*1440>2 then 2
else 0 end ) --下一条记录与上一条记录的时间差--分钟
from
(select a.*,
row_number() over(partition by servier_id order by service_id,s_time desc) roworder
from t1
) a,
(select a.*,
row_number() over(partition by servier_id order by service_id,s_time desc) roworder
from t1
) b
where a.servicer_id=b.service_id and b.roworder=a.roworder+1;
其中
t1表名
servier_id 是一个关键,比如一个员工的ID
s_time 记录时间
做两个子查询,对每一个员工的记录都按时间倒序排列
where条件把同一员工的前后两条记录关联起来。
F. sql语句查询,某一记录上下相邻的两条记录。怎么写
select * from news a
where news_id > 12345 and not exists(select 1 from news where news_id > 12345 and
news_id < a.id )
or
news_id < 12345 and not exists(select 1 from news where news_id < 12345 and
news_id > a.id )
如果不需要用一条语句写出来,那分开写的话,效率会好一些,这样写必须用一个or关键字
分开写:
select max(news_id) from news where news_id < 12345
select min(news_id) from news where news_id > 12345
G. 如何获取SQL查询当前数据上一条和下一条的记录
方法一:
查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):
1
select * from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];
查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):
1
select * from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];
H. SQL如何获取上一条..下一条..首尾记录...
获得上一条的id :select max(id)as id from [表] where id<"[你的要查的id]" order by [.....]
获得下一条的id :select min(id)as id from [表] where id>"[你的要查的id]" order by [.....]
很笨的办法但是很直观·
不知道你是什么数据库··根据不同的数据库有很多不同的写法··
比如 mysql 中的 limit 或者 mssql 中的 top
写法多了去啦··呵呵··上面举个例子罢了··希望对你有帮助
I. 关于查询sql中数据上一条记录和下一条记录的sql语句......
sql中是设置的自增列啊;不需输入当前的id,这里默认的是1;要是是1的话,就只能查到第2个,但3个就不晓得了回答: 当你查到第2个的时候,就获取第二条的ID,点下一条的时候,就用第二条的id去查,后边的类推~追问: 主要就是现在的id的获取问题回答: 第一条就以0开始就行,后边就获取查出来的数据的id就行了, 你数据都查出来了,还获取不到id?追问: id = Request.QueryString["id"]; 我是用这个获取的;不知对否回答: 你能获取到值就可以了,调试一下就行了~追问: 关键就是无法获取到值..问题就出现在这里了,卡起了回答: