簡體   English   中英

sql where運算符和in運算符

[英]sql where operator and in operator

我有下面的代碼工作正常:

select 
     M.value1, P.value2 
from 
     table 1 P
join 
     table 2 E on (P.value2 = E.value2)
join 
     table 3 M on ( something else here)
where 
     P.value2 in (select value1 
                  from table 4
                  where (value 2 = “aaa”) and (value 3 = “bbb))

因此,這里的表1具有稱為值2的列。我將它與表2結合在一起,在指定的條件下,表2也具有稱為值2的列。 然后根據其他條件將結果與表3合並。 然后添加where運算符和in運算符,它們將根據指定的條件從表4中返回一些特定的value1值。 因此,一些不需要的P.value2值將被跳過。

現在我的問題是:如果我還有另一個表,例如表5,它具有名為value1,value 2和value 3的列,該如何進一步對P.value2值進行排序? 我只想保留P.value2值,該值僅與某些條件相對應。 我嘗試了這段代碼,但是沒有用:

select 
    M.value1, P.value2 
from
    table 1 P 
join 
    table 2 E on (P.value2 = E.value2) 
join 
    table 3 M on ( something else here) 
where 
    P.value2 in (select value1 
                 from table 4 
                 where (value2 = “aaa”) and (value3 = “bbb))
    and P.value2 in (select value1 
                     from table 5 
                     where (P.value2 = value1) and (value3 = “ccc”))  
    or P.value2 in (select value2 
                    from table 5
                    where (P.value2 = value2) and (value3 = “ccc”))

這是在何處使用運算符的正確方法,我該如何對其進行優化? 再一次,我要實現的是添加以下內容:

 and P.value2 in (select value1 from table 5 where (P.value2 = value1) and (value3 = “ccc”)) or P.value2 in (select value2 from table 5 where (P.value2 = value2) and (value3 = “ccc”)) 

根據表5中的值獲得所需的P.value 2值。感謝您的幫助!

因此,我們在聯接表中說:

value1 value2 value3 value1 value2 value1 value2
------ ------ ------ ------ ------ ------ ------
bbbbb1 aaaaa1 ccccc1 ddddd1 aaaaa1 eeeee1 fffff1
bbbb24 aaaa24 cccc24 dddd24 aaaa24 eeee24 ffff24
bbbb32 aaaa32 cccc32 dddd32 aaaa32 eeee32 ffff32
bbbb42 aaaa42 cccc42 dddd42 aaaa42 eeee42 ffff42
..... etc

我們選擇了(排序)表格:

value1 value2
------ ------
eeeee1 aaaaa1
eeee24 aaaa24
eeee32 aaaa32
...etc 

現在我想使用表5對該表進行進一步排序,其中我:

value1 value2 value3
------ ------ ------
12223  aaaa12 ccc
12334  aaaa32 bbb
aaaa1  123344 ccc
12332  aaaa24 ccc

因此,應在此處保留aaa1和aaaa24,並從最終表中刪除aaaa32。

更改

and P.value2 in (select value1 from table 5
where (P.value2 = value1) and (value3 = “ccc”)) 
or P.value2 in (select value2 from table 5
where (P.value2 = value2) and (value3 = “ccc”))

and P.value2 in (select value1 from table 5
where (P.value2 = value1 OR P.value2 = value2) and (value3 = “ccc”))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM