Database 对于0获取的行postgresql返回0和null

Database 对于0获取的行postgresql返回0和null,database,postgresql,Database,Postgresql,下面我有一个SQL查询,它执行时没有错误,并且是功能性的,它唯一没有做的事情是当查询返回0行时,为INT返回0列,为VARCHAR列返回NULL列 质疑 输出 应得的产出 你在做左连接而不是内连接。您的tb_get_faults表可能包含返回的数据 您正在获取的列不包含tb_get_faults表中的列 尝试将您正在选择的所有列都放在select中的GROUPBY子句中,您将确切地看到聚合在做什么 如果只想在select上有数据时显示,请将“左连接”更改为“内部连接”您正在执行的是“左连接”而不

下面我有一个SQL查询,它执行时没有错误,并且是功能性的,它唯一没有做的事情是当查询返回0行时,为INT返回0列,为VARCHAR列返回NULL列

质疑

输出

应得的产出

你在做左连接而不是内连接。您的tb_get_faults表可能包含返回的数据

您正在获取的列不包含tb_get_faults表中的列

尝试将您正在选择的所有列都放在select中的GROUPBY子句中,您将确切地看到聚合在做什么

如果只想在select上有数据时显示,请将“左连接”更改为“内部连接”

您正在执行的是“左连接”而不是“内部连接”。您的tb_get_faults表可能包含返回的数据

您正在获取的列不包含tb_get_faults表中的列

尝试将您正在选择的所有列都放在select中的GROUPBY子句中,您将确切地看到聚合在做什么

如果要仅在select上有数据时显示,请将左侧联接更改为内部联接

使用查询创建CTE:

with CTE as (
  <your query here>
)
select * from cte
union all
select 'null', 0, 'null'
where not exists (select 1 from cte)
当CTE不返回任何行时,UNION ALL的第二个查询将返回您期望的行

使用查询创建CTE:

with CTE as (
  <your query here>
)
select * from cte
union all
select 'null', 0, 'null'
where not exists (select 1 from cte)

当CTE不返回任何行时,UNION ALL的第二个查询将返回您期望的行

我使用内部连接测试返回问题的相等值我使用内部连接测试返回问题的相等值我使用CTE测试,但是返回错误:关系CTE不存在我只是在CTE中添加了查询这就是它的工作方式:我使用CTE测试,但是返回的错误:关系cte不存在我只是在cte中添加了查询这就是它的工作方式:
with CTE as (
  <your query here>
)
select * from cte
union all
select 'null', 0, 'null'
where not exists (select 1 from cte)