如何在连接时优先选择一个列值而不是另一个列?

时间:2018-12-20 11:38:12

标签: sql

我有两个表,即offer(包含列iduser_id)和offer_maps(包含offer_iduser_id)。我想加入offer_id上的两个表,最后的选择应通过将offer_maps的user_id列优先于offers的user_id列来填充user_id列。例如,如果offer_maps的user_id列为null,并且offers的user_id列具有值,则最后的user_id应该具有offers'{{1} }列。但是,如果同时填充了两者,则仅选择offer_maps的user_id列值。如何通过sql查询实现此目标?这是我写的一个样本

user_id

这实际上连接了列的两个值,但是如果两个都存在,我只需要一个。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用ISNULL:

select ISNULL (offers.user_id, o.user_id) AS user_id 
from offers 
left join offer_maps o on offers.id::text = o.offer_id

答案 1 :(得分:0)

--This assumes O.user_id is not nullable, but OM.user_id is:
SELECT O.id[offer_id], ISNULL(O.user_id, OM.user_id)[user_id]
  FROM offers as O
  LEFT JOIN offer_maps as OM
    ON OM.offer_id = O.id
   AND ISNULL(OM.user_id, O.user_id) = O.user_id --Join when OM.user_id is null.