Sql 如何在此SELECT语句中使用EXISTS和子查询

Sql 如何在此SELECT语句中使用EXISTS和子查询,sql,subquery,exists,Sql,Subquery,Exists,如何将EXISTS和子查询与此SELECT语句一起使用?这将产生相同的结果并使用EXISTS: SELECT CountryCode, Name AS Country, Language FROM Country INNER JOIN CountryLanguage ON Country.Code = CountryLanguage.CountryCode WHERE Language = 'German' ORDER BY Country; 对于EXISTS子查询,如果子查询返回任何内容,则

如何将EXISTS和子查询与此SELECT语句一起使用?

这将产生相同的结果并使用EXISTS:

SELECT CountryCode, Name AS Country, Language
FROM Country INNER JOIN CountryLanguage
ON Country.Code = CountryLanguage.CountryCode
WHERE Language = 'German'
ORDER BY Country;

对于EXISTS子查询,如果子查询返回任何内容,则条件通过;如果它不返回任何行,则条件失败,无论您在select语句中输入了什么内容(请注意,我键入了“fish”)。但是,在任何情况下,如果某个国家的countrylanguage上有一行语言为德语,则该子查询仍将返回一行,因此对于适用于您的国家行,条件将通过,因此它将以相同的方式进行过滤。

感谢所有提示。我能够将一个包含EXISTS和一个子查询的解决方案拼凑在一起,该子查询产生的结果与我最初的SELECT语句相同

select countrycode, name as country, language
  from country y
 where exists (select 'fish'
          from countrylanguage x
         where x.countrycode = y.code
           and x.language = 'German')
 order by country;

什么数据库?SQL只是一种查询语言——但各种数据库,如MySQL、Postgres、Oracle、SQL Server、DB2、Ingres等,都有许多细微的差别……如果这不是一个家庭作业问题“如何做很奇怪”,我看不出有必要做家庭作业。SQL Server数据库。注意:您不需要“鱼”。您可以选择1或*来代替。@wildpasser我不是想欺骗他或其他什么,只是说明您在select语句中输入的内容并不重要。很多人都使用1/*/'x',所以我想明确一点,对于初学者来说,选择中列出的内容并不重要,这是令人困惑的。(我倾向于使用
*
,因为我通常从不使用
*
)也许
选择。。。如果不存在(从…)中选择12345
会更清楚地表明12345只是一个占位符
SELECT CountryCode, Name AS Country, Language
FROM CountryLanguage AS X INNER JOIN Country AS Y
ON X.CountryCode = Y.Code
WHERE EXISTS
    (
    SELECT 'German'
    FROM CountryLanguage AS X
    WHERE X.CountryCode = Y.Code
    AND X.Language = 'German'
    )
AND X.Language = 'German'
ORDER BY Country;