當前位置:首頁 » 編程語言 » sql上下條記錄的表示
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql上下條記錄的表示

發布時間: 2022-10-24 00:18:23

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