Postgresql 选择空FK时Postgres中的物化视图错误?
我在Postgres中有一个错误,如果我在查询中包含某些字段,查询将返回零记录 我正在使用PGAdmin客户端连接到供应商的数据库。我相信,我连接到的表是160万条记录的物化视图,带有一个复合主键(PK1和PK2) 如果我运行此查询:Postgresql 选择空FK时Postgres中的物化视图错误?,postgresql,select,null,views,Postgresql,Select,Null,Views,我在Postgres中有一个错误,如果我在查询中包含某些字段,查询将返回零记录 我正在使用PGAdmin客户端连接到供应商的数据库。我相信,我连接到的表是160万条记录的物化视图,带有一个复合主键(PK1和PK2) 如果我运行此查询: select PK1, PK2 from table where PK1 = 123 我将得到适当的子集,100条记录 如果我运行以下任一查询: select PK1, PK2, FK1 from table where PK1 = 123
select PK1, PK2
from table
where PK1 = 123
我将得到适当的子集,100条记录
如果我运行以下任一查询:
select PK1, PK2, FK1
from table
where PK1 = 123
或
我将得到零记录。我认为FK1字段与这个物化视图中的查找表连接;并且当FK1值为空时会发生错误
我不熟悉Postgres中的物化视图是如何构建的,但以前有人见过类似的情况吗?谢谢。当您从PK1=123的表中运行
选择PK1,PK2,coalesce(FK1,”)时会发生什么?…您能粘贴用于创建视图及其约束的脚本吗?Vao Tsun-FK是一个INT,因此当我使用“coalesce(FK1,-1)”时,不会返回任何记录。这就好像如果在Select语句中的任何地方提到了FK—直接,或在函数中,或使用“*”,则不会返回任何记录;我只是通过ODBC连接访问表。所以我不知道这是一个物理表,一个像物理表一样的动态视图,还是一个像物理表一样的材质化视图。如果你可以连接psql而不是pgadmin,你可以说\d+the_table\u name
,看看它到底是一个视图,一个物化视图,还是一个常规表,以及用于生成它的SQL(如果是view/matview)。这可能会给您一些线索。当您从PK1=123的表中运行选择PK1,PK2,coalesce(FK1,”)时会发生什么?…您能粘贴用于创建视图及其约束的脚本吗?Vao Tsun-FK是一个INT,因此当我使用“coalesce(FK1,-1)”时,不会返回任何记录。这就好像如果在Select语句中的任何地方提到了FK—直接,或在函数中,或使用“*”,则不会返回任何记录;我只是通过ODBC连接访问表。所以我不知道这是一个物理表,一个像物理表一样的动态视图,还是一个像物理表一样的材质化视图。如果你可以连接psql而不是pgadmin,你可以说\d+the_table\u name
,看看它到底是一个视图,一个物化视图,还是一个常规表,以及用于生成它的SQL(如果是view/matview)。这可能会给你一些线索。
select *
from table
where PK1 = 123