我希望在SELECT期间使用来自不同表(具有相同字段)的值覆盖表中的内容,以防退出。我正在使用Postgres。
我的用例是:我派生并存储一些数据(主要是其他表之间的关系),但希望用户能够纠正这些数据。在查询中,应返回那些用户更正的数据和关系,但我不想丢失原件。
我怎样才能做到这一点?
我也可以在应用程序逻辑中执行此操作,但如果可用,则更喜欢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