假设我有两张桌子
表A:
ID - Value1
===========
1 - A
2 - B
3 - C
4 - D
表B:
ID - Value2
===========
1 - AA
3 - NULL
4 - DD
这些表的正常连接可以是:
选择 *
来自TableA TA
LEFT JOIN TableB TB ON TA.ID = TB.ID
结果将是:
ID - Value1 - Value2
======================
1 - A - AA
2 - B - NULL
3 - C - NULL
4 - D - DD
但是,在我的情况下,我想用前一行的值填充NULL值(实际上缺少值)并保留实际为NULL的值,如下所示:
ID - Value1 - Value2
======================
1 - A - AA
2 - B - AA
3 - C - NULL
4 - D - DD
有没有办法实现这个目标?
编辑1: 我意识到我错误地提出了我的问题...抱歉让人感到困惑。
实际上,如果连接表的值实际为NULL,我想保留,如果值不存在则填充值。
答案 0 :(得分:1)
尝试这样的事情 - 内部左连接是获取表b中的每个值,前一个非空值(如果存在)然后将其连接到表a,如果不为null或新值则取值2如果是的话。
SELECT f.id,f.value1,coalesce(p.value2,p.PrevValue2) as value2
FROM TableA f
LEFT OUTER JOIN(SELECT t.ID,t.Value2,
(select s.value2 from tableB s
where s.value2 is not null and s.id<t.id
order by s.id DESC limit 1) as PrevValue2
FROM TableB t) p
ON(p.id = f.id)
答案 1 :(得分:1)
key.keyCode