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"]; 我是用這個獲取的;不知對否回答: 你能獲取到值就可以了,調試一下就行了~追問: 關鍵就是無法獲取到值..問題就出現在這里了,卡起了回答: