合并后从两个表中过滤一个值
Posted
技术标签:
【中文标题】合并后从两个表中过滤一个值【英文标题】:Filter a value from two table after merge both 【发布时间】:2020-02-25 13:11:29 【问题描述】:首先:说这篇文章与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
问候
【问题讨论】:
【参考方案1】:看起来你需要一个带有合并函数的左连接(它获取第一个值的值,如果它为空,则获取第二个值)
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
【讨论】:
只是想发布相同的内容,也许最好选择WHEN g.id_hist IS NULL THEN f.price ELSE g.price END
,因此如果有合适的数据行,请确保获取历史表的空值,但这取决于详细信息任务,甚至可能无关紧要......以上是关于合并后从两个表中过滤一个值的主要内容,如果未能解决你的问题,请参考以下文章