我有两个表,即offer(包含列id
和user_id
)和offer_maps(包含offer_id
,user_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
这实际上连接了列的两个值,但是如果两个都存在,我只需要一个。
答案 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.