簡體   English   中英

如何在SQL查詢中使用子查詢?

[英]How do use a sub-query within a query in SQL?

我對SQL相當陌生,在生成正確的信息時遇到了麻煩。 我有一個帶有FinishedGood零件號和ProductClassCode的數據集。 我要查找的是帶有多個ProductClassCode的所有FinishedGood零件號,其中之一是“ WU”。 我可以運行查詢以查找所有等於WU的ProductClassCode:

select finished_good
from FFTGGM.data_attributes_ext
where prodclass_cd = 'WU'

但是我在弄清楚如何使用該查詢將其與所有FinishedGood進行比較以生成ProdClasssCode為“ WU”和其他東西的FinishedGood列表時遇到了麻煩。 我知道我可以將其用作子查詢,但是我不確定如何獲取正確的查詢順序。 有什么建議嗎?

-編輯-

一些樣本數據:

樣本數據

或者您可以這樣做:

where prodclass_cd in (select distinct prodclass_cd from prodclasstable)

然后,您在WHERE子句中的條件可以是動態的。

您可以使用IN子句或EXISTS子句:

select *
from FFTGGM.data_attributes_ext
where finished_good in
(
  select distinct finished_good
  from FFTGGM.data_attributes_ext
  where prodclass_cd = 'WU'
)

要么

select *
from FFTGGM.data_attributes_ext A
where 
EXISTS (
  select finished_good
  from FFTGGM.data_attributes_ext B
  where A.finished_good=B.finished_good
    and prodclass_cd = 'WU'
)

如果您只想要具有“ WU”且還具有另一個非WU產品類別的制成品,則可以進行兩次檢查,如下所示:

select *
from FFTGGM.data_attributes_ext A
where 
EXISTS (
  select finished_good
  from FFTGGM.data_attributes_ext B
  where A.finished_good=B.finished_good
    and prodclass_cd = 'WU'
)
and 
EXISTS (
  select finished_good
  from FFTGGM.data_attributes_ext B
  where A.finished_good=B.finished_good
    and prodclass_cd <> 'WU'
)

暫無
暫無

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

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