「每個y的最新x」是乙個經典的sql問題,工作中經常碰到。如果想要解決此問題,還真是需要開動下腦筋殘性。當然不是「按y分組求最新的x值」那麼簡單,要求最新x的那條記錄或主鍵id。用一條sql語句可以簡單的解決此問題。
生成例項表和資料:
--建立表解決「每個y的最新x」經典sql問題:create table dbo.tab
( id int not null identity (1, 1),
y varchar(20) not null,
x datetime not null
) go
--插入資料
insert into tab(y, x) values('bbb', '2007-10-23 11:11:11')
insert into tab(y, x) values('bbb', '2007-10-23 11:11:11')
insert into tab(y, x) values('bbb', '2007-10-23 10:10:10')
insert into tab(y, x) values('aaa', '2007-10-23 12:12:12')
insert into tab(y, x) values('aaa', '2007-10-23 10:10:10')
insert into tab(y, x) values('aaa', '2007-10-23 11:11:11')
go
--一條sql語句實現在y列在建立索引,可以大大優化查詢速度。select id, y, x
from tab t
where (not exists
(select 1
from tab t2
where (t
t2.y = t.y) and (t2.x > t.x or
tt2.x = t.x and t2.id > t.id)))
一條語句簡單解決「每個Y的最新X」的SQL經典問題
每個y的最新x 是乙個經典的sql問題,工作中經常碰到。當然不是 按y分組求最新的x值 那麼簡單,要求最新x的那條記錄或主鍵id。用一條sql語句可以簡單的解決此問題。生成例項表和資料 建立表 create table dbo.tab id int not null identity 1,1 y v...
每個分類取最新的幾條的SQL實現
分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。今天我就碰到這樣乙個需求。而我自己的解決方案就是sql過於複雜,或者效能比較差的。為...
每個分類取最新的幾條的SQL實現
分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。今天我就碰到這樣乙個需求。而我自己的解決方案就是sql過於複雜,或者效能比較差的。為...