繁体   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