mysql - 显示SQL查询的所有结果(包括where count 0)

标签 mysql sql sql-server

我有以下查询:

SELECT airportname, COUNT(DISTINCT foundBag.id) countFound, COUNT(DISTINCT lostBag.id) countLost 
FROM airports 
INNER JOIN foundBag ON airport_id = foundBag.airportDest 
INNER JOIN lostBag ON airport_id = lostBag.airportDest 
GROUP BY airport.airportname");

我现在拥有的:一个包含 3 列的表格:机场名称以及找到的行李数量和丢失的行李数量。 当两列都被填满时,它仅显示机场(行)。

我想要两件事:

  1. 即使没有丢失/找到的行李,也会显示所有机场。
  2. 显示丢失/发现行李的机场(因此当填充 1 列或两列时)

我用 When 等尝试过这个,但它总是给我错误。我也尝试过 EXISTS,但我是 SQL 新手,所以我不知道它是如何工作的...

有人有解决办法吗?

亲切的问候,

LTKort

最佳答案

这应该适用于两种情况:

SELECT airportname, COUNT(DISTINCT foundBag.id) countFound, COUNT(DISTINCT lostBag.id) countLost 
FROM airports 
LEFT JOIN foundBag ON airport_id = foundBag.airportDest 
LEFT JOIN lostBag ON airport_id = lostBag.airportDest 
WHERE foundBag.airportDest is not null
   or lostBag.airportDest is not null
GROUP BY airport.airportname

关于mysql - 显示SQL查询的所有结果(包括where count 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41574611/

相关文章:

mysql - 如何找到sql选择的字符的位置

sql - GORM - 动态查询 - 分离标准?

sql - 计算最近时间的优雅方法

sql-server - 使用带有临时表的存储过程的 BIML 生成 SSIS 包

MySQL 一起使用 GROUP CONCAT 和 FIND_IN_SET

sql - MySQL "between"子句不包含?

mysql - SQL推荐系统

sql - 使用 SQL 解析 XML

select - MySQL 从一个表中选择所有列,从另一个表中选择一些列

mysql - 将字符添加到sql中的字符串