合并后从两个表中过滤一个值

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,因此如果有合适的数据行,请确保获取历史表的空值,但这取决于详细信息任务,甚至可能无关紧要......

以上是关于合并后从两个表中过滤一个值的主要内容,如果未能解决你的问题,请参考以下文章

验证 Jquery 后从表中获取值

GIT:如何在恢复合并后从分支中提取更改

将两个表中的列合并为一个

根据另一个表中的自定义属性过滤值

如何合并两个表,覆盖两者中的元素?

SQL 合并一个表中的字段