好像是標(biāo)準(zhǔn)sql吧,就這么寫啊。不過大表可不能這么做哦,太占資源了。
成都創(chuàng)新互聯(lián)主營五華網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,五華h5小程序設(shè)計搭建,五華網(wǎng)站營銷推廣歡迎五華等地區(qū)企業(yè)咨詢
補(bǔ)充:
oracle里面有“+”的,不過我懷疑你是不是要拼兩個字符串。正統(tǒng)數(shù)據(jù)庫,包括oracle和db2拼接字符串都是采用雙豎線“||”,加號只能用于使兩個整型或者浮點(diǎn)型數(shù)值相加。
這需要看你的相關(guān)字段的類型的。如果是數(shù)值型,需要首先轉(zhuǎn)換為字符型,再合并,例如:
select
*
from
a
where
to_char(col001)||to_char(col002)
not
in
(select
to_char(col001)||to_char(col002)
from
b)
如果是字符型,可以直接合并:
select
*
from
a
where
col001||col002
not
in
(select
col001||col002
from
b)
如果是date型,同樣轉(zhuǎn)換為字符,具體查手冊。
但是你這種寫法,怎么說呢,不太好把,首先這并不是嚴(yán)格按照你所描述的邏輯,舉例來說,如果表a字段是:"12","3",表b是:"1","23"那又會怎樣?另外,not
in總是執(zhí)行全表掃描,效率不高,這樣寫會好一些:
select
a.*
from
a
left
join
b
on
(a.col001
=
b.col001
and
a.col002
=
b.col002)
where
b.col002
is
null
如下參考:
1.從tblTest表中獲取itemcode='Item001'的記錄行,然后使用where的等式(=)條件,select*fromtblTestwhereitemcode='Item001'如下圖。
2. 如果從tblTest表中獲得itemnum 50的記錄行,則可以使用where greater than()條件。也可以使用大于或等于(=),select * from tblTest where itemnum 50,如下圖。
3.從tblTest表中獲取itemnum 50的記錄行,您可以使用where的小于()條件。小于條件也可以使用小于或等于(=),select * from tblTest where itemnum 50如下圖。
4.從tblTest表中獲取itemnum不等于itemprice的記錄行,可以使用where's not equal to (!等于或小于如下圖。
5.從tblTest表中獲取包含itemname中單詞“item”的記錄行,然后可以使用where的fuzzy(%)條件。左邊的百分號表示左邊可以是任何值,右邊的百分號表示右邊可以匹配任何值,百分號可以是兩邊的,如下圖。
oracle中用一條select語句把符合多個條件的查詢結(jié)果列出來SELECTp.product_directory_level,COUNT(CASEWHENp.product_directory_level=1THEN。