如何加入 2 SELECT 语句,但仅在表 B 上满足表 A 的条件时显示输出

Posted

技术标签:

【中文标题】如何加入 2 SELECT 语句,但仅在表 B 上满足表 A 的条件时显示输出【英文标题】:How to JOIN 2 SELECT statements but only show output when conditions from table A are met on table B 【发布时间】:2020-06-13 22:36:20 【问题描述】:

我正在练习视图,我需要 JOIN 两个表(最简单的方法),但在满足条件时,表 AI 有 6 行,而表 B 上的条件与表 B 相同(列名相同) ,比如 82。

我只需要显示关于这 6 行的数据。

CREATE VIEW myview AS 
SELECT Name AS Country, Population FROM country WHERE Population >= 9000000;
SELECT District, Name AS City, Population FROM city WHERE Population >= 9000000;

我正在使用世界数据库。

_________________City_________________

ID | Name | CountryCode | District | Population

_________________Country_________________

Name | Population | Code

样本数据:

城市

国家

预期结果:

干杯。

【问题讨论】:

您确定表中没有 Country like code 或 countrycode 列吗? 是的。有两个,代码和代码 2。 然后编辑您的问题并发布示例数据和预期结果以阐明您的要求。 请注意,在 mysql 中针对视图的查询对底层索引的访问是有限的,这使得它们(在我看来)相当无用 请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。请在代码问题中给出minimal reproducible example--cut & paste & runnable code;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于 SQL,包括 DDL 和表格初始化。 【参考方案1】:

如果你想要一个连接两个表的视图,你可以使用

    CREATE VIEW myview AS 
    SELECT co.Name AS Country
        , co.Population Country_population
        , ci.District 
        , ci.Name As city
        , ci.population City_population
    FROM country co 
    INNER JOIN city ci ON  ci.CountryCode = co.Code 
    WHERE ci.population >= 9000000

然后

 select * from myview;

【讨论】:

这看起来很有希望,但在 INNER JOIN 附近有一个语法错误,我不太明白,除了我的意思是人口中缺少“p”。 好的,现在可以了,但它显示了很多行,我猜我可以限制输出,但我认为这个想法太只显示来自城市的数据,所以可能只需要使用我猜是来自城市的人口。 回答已更新,也为城市添加了条件 .. 如果您愿意,可以删除国家/地区人口的条件 太棒了,删除了条件,现在效果很好。非常感谢。【参考方案2】:

根据您的预期结果,我假设您希望每个国家/地区的城市/城市都有population >= 9000000,所以像这样加入:

select 
  c.Name country,
  t.district,
  t.city,
  t.population
from country c inner join city t 
on t.countrycode = c.Code 
where t.population >= 9000000;

您也不需要为国家/地区设置条件population >= 9000000,因为带有population >= 9000000 城市的国家/地区肯定满足该条件。

【讨论】:

以上是关于如何加入 2 SELECT 语句,但仅在表 B 上满足表 A 的条件时显示输出的主要内容,如果未能解决你的问题,请参考以下文章

<select> 元素的纯 CSS 样式,但仅在选择非默认选项时[重复]

我如何更新此代码以第二次运行但仅在已解压缩的 zip 存档上运行?

在 expss 中创建一个表,显示 freq 和 cpct 但仅在 cpct 列上测试 cpct

如果存在则插入仅在表中有记录时才有效

ntlm 身份验证的 Java URLConnection 错误,但仅在 Linux 和 Java 7 上

可折叠的 div,但仅在移动设备上