如何在SQL中编写"独占"查询?

sam*_*sam 5 sql database join

我正在阅读过去一篇关于我正在学习的数据库课程的论文,并且我遇到了一个SQL问题

这是提供的架构

  • 国家(名称,资本,地区),名称是关键

  • 人口(国家,人口,儿童,成人),其中国家是指国家名称,人口是总人口,儿童和成人是儿童和成年人口的百分比.

  • 语言(国家,语言,百分比) - 对于该国使用的每种语言,它列出了说该语言的人口百分比.

这是一个问题:

在SQL中编写以下查询:查找在总人口超过10 ^ 7的国家/地区使用的语言.

这是我到目前为止:

SELECT l.language
FROM people p, language l
WHERE l.country = p.country AND
    p.population > 10^7
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是如何检查没有其他国家使用某种语言,但人口数量少于10 ^ 7.

有什么建议?谢谢

Mos*_*cho 4

获取所有语言。从该集中删除人口 <= 10^7 的国家/地区使用的所有语言。提醒应该是仅在人口> 10^7 的国家使用的语言。

select language from languages
where language not in (
    select language from languages l
    join people p on l.country = p.country
    where p.population <= 10^7)
Run Code Online (Sandbox Code Playgroud)

这是基于您的设计有这样的限制:每种语言必须在至少一个国家/地区使用;)