gpt4 book ai didi

MySQL 限制,无法协同工作

转载 作者:行者123 更新时间:2023-11-29 10:31:36 25 4
gpt4 key购买 nike

我有 3 个表,我正在尝试获取 10 种最常用的语言以及使用该语言的国家/地区数量。我的 table 是:

City:           Name|Population|CountryCode
Country: Name|Code
CoutryLanguage: Language|CountryCode

为了获得前 10 种语言,我使用每个城市的人口并将其与国家/地区语言相结合:

SELECT cl.language
FROM City ci INNER JOIN CountryLanguage cl ON ci.CountryCode = cl.CountryCode
GROUP BY cl.Language
order by sum(ci.population) desc limit 10

我的下一个逻辑是将国家/地区与语言连接起来,其中语言位于我新创建的表中:

select co.Name, cl.Language
from Country co Inner join CountryLanguage cl on co.Code = cl.CountryCode
where cl.Language in (SELECT cl.language
FROM City ci INNER JOIN CountryLanguage cl ON ci.CountryCode = cl.CountryCode
GROUP BY cl.Language
order by sum(ci.population) desc limit 10)

这给了我一个奇怪的错误,我可以在没有LIMIT 10的情况下很好地使用它,但它只列出了所有国家和所有语言。有没有办法来解决这个问题??我看到了一些关于此的问题,但没有一个是真正清楚的。您介意向我解释一下这个错误吗?我无法升级我的 sql 版本。提前致谢


我将语言数量限制为 10 种,而不是整个表格

最佳答案

请尝试这个,抱歉,我没有安装 mysql,只是在这里编写 SQL....

select co.Name, cl.Language
from Country co
Inner join CountryLanguage cl on co.Code = cl.CountryCode
inner join (
SELECT language from (
SELECT DISTINCT cl.language
FROM City ci INNER JOIN CountryLanguage cl ON ci.CountryCode = cl.CountryCode
GROUP BY cl.Language
order by sum(ci.population) desc
) as lng_tbl
limit 10
) aux_tbl
on aux_tbl.Language = cl.Language
<小时/>

查看子查询,因为它是在运行时/内存中创建的表,在这种情况下,您会得到下表:

SELECT language from (
SELECT DISTINCT cl.language
FROM City ci
INNER JOIN CountryLanguage cl
ON ci.CountryCode = cl.CountryCode
GROUP BY cl.Language
order by sum(ci.population) desc
) as lng_tbl
limit 10

>>> | language |
>>> | English |
>>> | Portuguese |
>>> | ... |

之后只需将其包裹在 () 中并为其命名 aux_tbl ,然后您可以在联接和普通表中使用它。作为一项练习,尝试摆脱外在的从 () 中选择语言为 lng_tbl。

关于MySQL 限制,无法协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47313551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com