如何编写没有空的联接两个表的查询?

How write query for join two tables without nulls?

提问人:user6408649 提问时间:8/25/2023 更新时间:8/25/2023 访问量:38

问:

我有 2 张桌子

飞机场

+ -------------------------------------+-------------+-------------+
| ID                                   | IATA        | ICAO        | 
+--------------------------------------+-------------+-------------+
| 01d491eb-7d00-410c-9c19-eb23d83f9c65 | CHH         | SPPY        | 
+--------------------------------------+-------------+-------------+

机场翻译

+ -------------------------------------+------------------------------------ -+------+-------------+
| ID                                   | PARENTID                             | LANG | VALUE       |
+--------------------------------------+--------------------------------------+------+-------------+
| 01d491eb-7d00-410c-9c19-eb23d83f9c66 | 01d491eb-7d00-410c-9c19-eb23d83f9c65 | ESP  | CHACHAPOYAS |
+--------------------------------------+--------------------------------------+------+-------------+
| eb06eb88-0530-4051-b4eb-3a04a01bcafe | 01d491eb-7d00-410c-9c19-eb23d83f9c65 | ENG  | CHACHAPOYAS |
+--------------------------------------+--------------------------------------+------+-------------+

以下查询返回简单联接:

SELECT
public."Airports"."ID",
public."Airports"."IATA", 
public."Airports"."ICAO",
CASE WHEN public."AirportTranslation"."Lang" = 'ESP' THEN public."AirportTranslation"."Value" ELSE null END as "ESP",
CASE WHEN public."AirportTranslation"."Lang" = 'EN' THEN public."AirportTranslation"."Value" ELSE null END as "EN"
FROM public."Airports" JOIN 
public."AirportTranslation" ON

结果如下所示:

+ -------------------------------------+-----+------+-------------+-----------+
| ID                                   | ITA | ICAO | ESP         | EN        |
+--------------------------------------+-----+--------------------+-----------+
| 01d491eb-7d00-410c-9c19-eb23d83f9c65 | CHH | SPPY | null        |CHACHAPOYAS|
+--------------------------------------+-----+--------------------+-----------+
| 01d491eb-7d00-410c-9c19-eb23d83f9c65 | CHH | SPPY | CHACHAPOYAS |null       |
+--------------------------------------+-----+------|-------------+-----------+

是否可以编写查询来获取没有空值的结果,也不使用 WITH、交叉表等?

+ -------------------------------------+-----+------+-------------+-----------+
| ID                                   | ITA | ICAO | ESP         | EN        |
+--------------------------------------+-----+--------------------+-----------+
| 01d491eb-7d00-410c-9c19-eb23d83f9c65 | CHH | SPPY | CHACHAPOYAS |CHACHAPOYAS|
+--------------------------------------+-----+--------------------+-----------+
SQL PostgreSQL 联接 null 大小写

评论

5赞 jarlh 8/25/2023
是的,这是可能的。您可以使用表达式对每种语言进行条件聚合GROUP BYcase
0赞 user6408649 8/25/2023
@jarlh Thaks 的答案。应该使用哪种聚合函数?
2赞 jarlh 8/25/2023
MAX() 或 MIN()。

答: 暂无答案