有条件地选择不同的关系以反映用户的覆盖(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)的主要内容,如果未能解决你的问题,请参考以下文章