繁体   English   中英

如何在 SQL 中执行子查询

[英]How to do a sub-query in SQL

我的桌子看起来像这样:

SQL 表

如果他们有 SpecialityIdFK = 1 AND SpecialityIdFK= 2,我想检索所有 PractitionerIdFK。我尝试了以下操作,但似乎不起作用。

SELECT PractitionerSpecialities.PractitionerIdFK
FROM PractitionerSpecialities
WHERE PractitionerSpecialities.SpecialityIdFK IN (
        SELECT PractitionerSpecialities.SpecialityIdFK
        FROM PractitionerSpecialities
        WHERE PractitionerSpecialities.SpecialityIdFK = 1
            AND PractitionerSpecialities.SpecialityIdFK = 2
        )

它可以通过在 SQL 中使用INBETWEEN运算符来实现。

SELECT  PractitionerSpecialities.PractitionerIdFK 
FROM PractitionerSpecialities
WHERE PractitionerSpecialities.SpecialityIdFK in (1,2)

-- You can BETWEEN Clause as well ..

SELECT  PractitionerSpecialities.PractitionerIdFK 
FROM PractitionerSpecialities
WHERE PractitionerSpecialities.SpecialityIdFK BETWEEN 1 AND 2 

在子查询中使用 OR 运算符而不是 AND 。

您可以使用GROUP BYHAVING

SELECT ps.PractitionerIdFK 
FROM PractitionerSpecialities ps
WHERE ps.SpecialityIdFK IN (1, 2)
GROUP BY ps.PractitionerIdFK 
HAVING COUNT(*) = 2;  -- the size of the comparison list

这假设PractitionerSpecialities中没有重复项。 如果这是可能的,那么使用HAVING COUNT(DISTINCT ps.SpecialityIdFK) = 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM