declare @x int ,@y int ,@z int
set @x=33
set @y=666
set @z=55
if @x>@y
begin
if @x>@z
print @x
else
print @z
end
else
begin
if @y>@z
print @y
else
print @z
end
第二種
declare @x int ,@y int ,@z int,@max int
set @x=33
set @y=22
set @z=20
if @x>@y
set @max =@x
else
set @max =@y
if @max >@z
set @max=@max
else
set @max =@z
print @max
❷ sql 中如何比較數據,並返回一個結果,簡單語句能實現嘛,存儲過程能實現嘛,詳細如下
1.
1條sql語句能寫,只是分支太多,語句效率估計會慢死。
(1)三表關聯(新糧表,化驗單,檢驗單,根據grainID關聯),組成一個新的有別名的臨時表。
(select語句) as XX
根據grainID的相同的關系,找到你要的數據,比如新糧表的grainType,檢驗單的 testResult等。
(2)上面的XX臨時表與制度表關聯(根據grainType)
按照你的說法,項目一共有,蟲蝕,病斑,破碎,生芽,發霉,損傷六項,必須全部合格,才顯示testResult,否則顯示「某某不合格」,那麼就存在一個問題,如果有兩項或者三項不合格,那麼是不是兩項或者三項都要顯示,如果這樣的話,那麼case when的分支就要寫的非常多,是一個組合的關系,有一項不合格的有6個,有兩項不合格的有15個,有三項不合格的有30個,四項15種,5項6種,6項1種,再加上合格的1種情況,加起來case when 要寫1+6+15+20+15+6+1=64種情況,那麼這條語句會很長,而且運行起來真的很慢。
如果只是每次找出一個就行,那麼就可能會出現這次是蟲蝕不合格,下次是病斑不合格這種可能,這樣也不太好,個人覺得最好一次說明白。
2.存儲過程怎麼辦
存儲過程自己實現的話,那麼和上面的一條語句差不多,也是比較麻煩的,畢竟他要返回所有可能的結果,然後反饋給前台,這樣的話,其實和一條語句差不太多。
3.個人認為比較靠譜的辦法
也是存儲過程的,但是並不是用存儲過程輸出全部結果,只輸出對比結果,比如(僅為舉例)輸出一個結果集(010100),那麼前台就可以解讀這個字元串為「病斑生芽不合格」,這樣速度就會快很多。
❸ sql兩個表數據比較
select count(*) from a
left outer join (select b.編號,sum(b.數量) from b group by b.編號) c on a.編號=c.編號 and a.數量>c.數量
❹ sql如何比較兩個表數據是否一致
1、創建兩張測試表;create table test_aa(id number);
create table test_bb(id number);
❺ 在sql中字元串怎麼與數值類型比較
Oracle比較字元串是根據ASCII碼來的,第一個字母的ASCII大小比較如果相等再比較下一個,類推。
字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
Oracle在執行SQL的時候有些時候會自動轉換,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是數字型的也可以查出來,但是Oracle有區分字元和數字
就是通過加不加單引號來區分。
❻ SQL如何對比兩張表的數據
insert
into
tablea
select
*
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
and
tablea.driversize
=
driversize)
update
tablea
set
tablea.driversize
=
tablea.driversize
from
tablea
,tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
如果你以tableb為準的話,你最好在tableb上加個觸發器
❼ SQL中如何比對欄位字中的數值
selecta.n1,b.n1
fromtabnamea,tabnameb
wherea.id=1andb.id=11
anda.n1=b.n1
selecta.n2,b.n2
fromtabnamea,tabnameb
wherea.id=1andb.id=11
anda.n2=b.n2
...
這樣? 有返回值的表示值相同。
❽ sql 查詢取欄位值進行比較
你怎麼認定
ts0004和00004
的大小,總要有個規則吧?
補充:
試試以下語句,希望能幫到你!
select
max(rigrt(欄位名,5))
from
表
where
欄位名
like
'%crm-[0-9][0-9][0-9][0-9][0-9]'
❾ SQL中如何進行數據的比較
是完全匹配,還是部分匹配呢?
匹配"王"字
前面匹配,select * from [a] where 姓名 like '王%'
後面匹配,select * from [a] where 姓名 like '%王'
包含匹配,select * from [a] where 姓名 like '%王%'
完全相等,select * from [a] where 姓名 = '王'