Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql联接,计数引用,包括零_Sql_Mariadb - Fatal编程技术网

Sql联接,计数引用,包括零

Sql联接,计数引用,包括零,sql,mariadb,Sql,Mariadb,我制作了一个简单的数据库,其中包含两个表,“国家”和“人类”: +------+---------+ | id | name | +------+---------+ | 1 | Finland | | 2 | Sweden | | 3 | Norway | | 4 | Denmark | +------+---------+ +--------+----------+ | name | homeland | +--------+----------+

我制作了一个简单的数据库,其中包含两个表,“国家”和“人类”:

+------+---------+
| id   | name    |
+------+---------+
|    1 | Finland |
|    2 | Sweden  |
|    3 | Norway  |
|    4 | Denmark |
+------+---------+

+--------+----------+
| name   | homeland |
+--------+----------+
| Liisa  |        1 |
| Matti  |        1 |
| Holger |        2 |
+--------+----------+
这个问题表明挪威没有人居住,但为什么它没有提到丹麦

select country.name, count(human.name)
from human
    right join country on human.homeland = country.id
group by homeland;

+---------+-------------------+
| name    | count(human.name) |
+---------+-------------------+
| Norway  |                 0 |
| Finland |                 2 |
| Sweden  |                 1 |
+---------+-------------------+

我使用的是MariaDB,但也更喜欢在其他数据库上工作的解决方案。

您通常通过
分组
选择的列相同的列,但那些是设置函数的参数的列除外:


通常,除了作为设置函数的参数的列外,您可以按与您选择的列相同的列进行分组:


按国家分组。改为按名称分组。今天的提示:至少在涉及多个表时,对所有列进行限定。例如,
human.homeland
而不仅仅是
homeland
。提示2:大多数人发现
主表左连接可选数据
可选数据右连接主表
@jarih更容易理解,这是一个简单的问题。谢谢如果你回答这个问题,我可以把它标记为有效。顺便说一句,为什么从我的问题来看挪威是零呢?没有人住在挪威!你有两个芬兰人和一个瑞典人。(LEFT JOIN/RIGHT JOIN将为您提供这些0人国家/地区。如果您不需要这些国家/地区,请执行常规的内部联接。)
按国家/地区分组。改为按名称分组。
。今天的提示:至少在涉及多个表时,对所有列进行限定。例如,
human.homeland
而不仅仅是
homeland
。提示2:大多数人发现
主表左连接可选数据
可选数据右连接主表
@jarih更容易理解,这是一个简单的问题。谢谢如果你回答这个问题,我可以把它标记为有效。顺便说一句,为什么从我的问题来看挪威是零呢?没有人住在挪威!你有两个芬兰人和一个瑞典人。(LEFT JOIN/RIGHT JOIN将为您提供这些0人国家/地区。如果您不需要这些国家/地区,请执行常规的内部联接。)
select country.name, count(human.name)
from country 
    left join human on human.homeland = country.id
group by country.name;