Sql 如何在此SELECT语句中使用EXISTS和子查询
如何将EXISTS和子查询与此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子查询,如果子查询返回任何内容,则
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;