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...