我有两个查询。一个像:
with table1 as (...), table2 as (...) and so on
select * from table1, table2, ...
where table1.column1 = table2.column1 and table1.column1 = table3.column1 etc.
它运作良好且相当快(200-500ms)。但是问题是单元格为空。如果有任何空字段-它不会占用整行。
另一个查询是:
with table1 as (...), table2 as (...) and so on
select * from table1
left join table2 on table1.column = table2.column
left join table3 on table1.column = table3.column
etc
它给了我想要的结果,但是太慢了(3-5分钟)。
有什么解决方案可以使第一个查询保存空字段并将所有数据提供给我?
答案 0 :(得分:0)
是的,有可能。您可以使用COALESCE条件。
COALESCE函数返回的第一个参数不是 空值。仅当所有参数均为null时,才返回Null。经常 用于在数据为 检索显示,例如:https://www.postgresql.org/docs/8.1/static/functions-conditional.html
with table1 as (...), table2 as (...)
select COALESCE(column1,''),
COALESCE(column2,'')
from table1, table2, ...
where table1.column1 = table2.column1 and table1.column1 = table3.column1
column1 | column2
---------+--------
1 | one
2 |
3 | other
如果该列为空,则该列将为空白。