sql - 合并后从两个表中过滤一个值
问题描述
第一:说这个帖子和url有关
我想过滤一个ID。如果我转到表 2 并使用 id 查看我的记录,这很简单,但问题是,我需要表 1 中的一些信息,而表 2 中没有这些信息
将其显示为表格。
第三:如果我的表 2 是空的,当我通过 654 id 过滤时,我的查询必须从表 1 中获取所有信息
所以我不知道如何开始......有人可以再次帮助我吗?我试过这个:
SELECT f.id_hist, f.producto, f.price
FROM TABLE(fnc_historical('JAP')) f
WHERE f.id_hist IN
(SELECT DISTINCT f.id_hist
FROM TABLE(fnc_historical('JAP')) f
inner join new_table g on (f.id_new = g.id_hist)
where f.id_new = 654
)
UNION
SELECT f.id_hist, f.producto, g.new_price
FROM TABLE(fnc_historical('JAP')) f
inner join new_table g on (f.id_new = g.id_hist)
where f.id_new = 654
但此代码返回两条记录,值为 40 和 25
问候
解决方案
看起来你需要一个带有合并函数的左连接(它获取第一个值的值,如果它为空,那么它获取第二个值)
SELECT f.id_hist, f.producto, f.place, COALESCE(g.price,f.price) as price
FROM TABLE(fnc_historical('JAP')) f
LEFT JOIN new_table g on (f.id_new = g.id_hist)
WHERE f.id_hist = 654