我有两个具有相同列和相同数据类型的相似表。目标是获取table_a的数据,但如果存在具有相同ID的值,则将所有条目替换为table_b值。
所以我有以下两个选择:
SELECT table_a.id, table_a.text
和
SELECT table_b.id, table_b.text
使用伪代码:
iterate table_a data
if table_a.id == table_b.id then
table_out.id = table_b.id
table_out.text = table_b.text
else
table_out.id = table_a.id
table_out.text = table_a.text
end if
end iterate
表table_a和table_b的数据不应被触及。仅select的输出应包含数据。
我首先想到的是通过左联接将两个表联接起来。然后,我需要一种如果要切换选择列的方法。
谢谢。
答案 0 :(得分:2)
为此,我推荐from trading_calendars import get_calendar, register_calendar
from my_calendar import MyCalendar
register_calendar('MyCalendarName', MyCalendar, True)
trading_calendar=get_calendar('MyCalendarName')
:
coalesce()
答案 1 :(得分:1)
您可以使用LEFT JOIN
,它将为您提供所有table_a记录和两个表之间的公用记录。然后使用案例逻辑获取需求输出
SELECT
t1.id,
(CASE WHEN t1.id=t2.id THEN t2.text ELSE t1.text END) AS text
FROM table_a t1
LEFT JOIN table_b t2
ON t1.id=t2.id
ORDER BY t1.id