SQL應用 查詢最大版本值

2021-04-06 12:04:09 字數 1621 閱讀 2940

emsno        copgno         exgversion      

e57705000004 dshc0741           60                                 

e57705000003 dshc0741           50 

e57705000002 dshc0741           36

e57705000001 dshc0742           65                                        

e57705000000 dshc0742           75  

需要的結果:

emsno        copgno         exgversion      

e57705000004 dshc0741           60                                  

e57705000000 dshc0742           75  

既 copgno中每個產品的最大exgversion給取出來。

select t.emsno,e.copgno,e.exgversion ,t.begindate,t.enddate

from em***gversion t ,(select copgno,max(exgversion) as exgversion from em***gversion group by copgno) e

where t.copgno=e.copgno and t.exgversion=e.exgversion

order by e.copgno

select a.* from em***gversion a

where not exists(select 1 from em***gversion where copgno=a.copgno and exgversion>a.exgversion)

select 1 from ...

通常存在於exists中.

也可以寫做

select 2 from ...

或者任何常數.

因為exists只是判斷為不為null來返回true或者false

通常的寫法還有

select count(1) from ...

其實等同於

select count(*) from ...

或者select count(主鍵) from ...

這樣的sql

根據主鍵及索引的建立方式,速度上有細小的差別.

而-1 = -1這樣的表示式是永遠返回true的.

就像 1 = 2是永遠返回false一樣.

我們通常copy表結構就經常用

create table newtable as

select * from oldtable where 1 = 2;

-1 = -1一般是寫在條件不確定的用字串拼出來的動態sql中.

比方說:

我的where後面可能有5個條件,也可能乙個也沒有.

這時我會這樣寫

".... where 1 = 1"+str1+str2+...; -- 其中的str1,str2等有可能是空字串.

分組查詢最大 最小值sql

經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 思路 首先利用max group by取出每組最高的分數,再與表自連線 sql語句 select t1.id,t1.name,t1.calssid,t2.score from t zhb t1 sel...

sql多表查詢分組最大值

問題描述 有三張表 學生表student id,name id為主鍵 課程表subject id,name id為主鍵 分數表score studentid,subjectid,score 其中studentid與subjectid為聯合主鍵,一句sql語句查詢出 學號,姓名,課程名,課程最高分.模...

分組查詢最大 最小值sql

經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 sql語句 select id,name,calssid,max score from select from t zhb order by score desc a group by calssid...