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

问题描述 投票:0回答:1

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

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

我怎样才能做到这一点?

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

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

sql postgresql database-design
1个回答
0
投票

您可以使用带有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
© www.soinside.com 2019 - 2024. All rights reserved.