create table tb (ptoid int,proclassid int,proname varchar(10))
insert tb
select 1,1,'衣服1'
union all
select 2,2,'衣服2'
union all
select 3,3,'衣服3'
union all
select 4,3,'衣服4'
union all
select 5,2,'衣服5'
union all
select 6,2,'衣服6'
union all
select 7,2,'衣服7'
union all
select 8,1,'衣服8'
select * from tb
ptoid proclassid proname
----------- ----------- ----------
1 1 衣服1
2 2 衣服2
3 3 衣服3
4 3 衣服4
5 2 衣服5
6 2 衣服6
7 2 衣服7
8 1 衣服8
(所影響的行數為 8 行)
select * from tb a where
(select count(*) from tb b where b.proclassid=a.proclassid and b.ptoid>a.ptoid) <2
order by proclassid
ptoid proclassid proname
----------- ----------- ----------
1 1 衣服1
8 1 衣服8
7 2 衣服7
6 2 衣服6
4 3 衣服4
3 3 衣服3
(所影響的行數為 6 行)
SQL 選取每個分組的某一條資料
背景 有時候我們需要對多條資料按照某個字段分組,然後選取某組中的某乙個記錄。例如 同一運單 有多條裝車記錄時 取最大時間的記錄 sql 實現 1.sqlserver select waybill id,運單號 sigin time,簽到時間 unload time,卸車時間 loading time...
SQL 獲取每個使用者最新的一條資料記錄
被問這個問題的時候我的第一想法居然是用order by。唉,好好的max 放著不用。sql示例 獲取檔案上傳記錄表中,每個使用者產生的最新一條記錄 select from file record as a inner join select file author,max file ctime as...
mysql 取每個分類的前N條資料。
現有乙個這樣的需求 在一張表中取有100個分類下的1000條資料。現要取每個分類下的前4條資料。表結構如下 id varchar 32 not null comment id isvalid varchar 2 default null comment 邏輯刪除標識1正常0刪除 createtime...