有条件地选择不同的关系以反映用户的覆盖(Postgres)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有条件地选择不同的关系以反映用户的覆盖(Postgres)相关的知识,希望对你有一定的参考价值。

我希望在SELECT期间使用来自不同表(具有相同字段)的值覆盖表中的内容,以防退出。我正在使用Postgres。

我的用例是:我派生并存储一些数据(主要是其他表之间的关系),但希望用户能够纠正这些数据。在查询中,应返回那些用户更正的数据和关系,但我不想丢失原件。

我怎样才能做到这一点?

  • 我想我可以conditionally select from other tables,但这是最好的方法吗?
  • 我是否必须手动为每个字段实现条件,或者我可以一次性完成所有这些操作吗?

我也可以在应用程序逻辑中执行此操作,但如果可用,则更喜欢DB中的干净解决方案。

答案

您可以使用带有case语句的左连接:

SELECT 
    CASE 
      WHEN different_table.id IS NULL THEN content_table.name 
      ELSE different_table.name END AS name,
    CASE 
      WHEN different_table.id IS NULL THEN content_table.price 
      ELSE different_table.price END AS price
FROM content_table
LEFT OUTER JOIN different_table ON content_table.id = different_table.id

以上是关于有条件地选择不同的关系以反映用户的覆盖(Postgres)的主要内容,如果未能解决你的问题,请参考以下文章

如何按范围分组,或有条件地从查询结果中选择

大数据这些坑,你躲的过去吗?

向 eloquent 资源添加过滤器以有条件地附加关系

有条件地将第一个输入值反映到第二个输入字段(基于复选框)

REST的URI来反映资源的关系?

软件测试理论5