这是一个更大的桌子的小型摘录得出的值替换为空值,称之为日志:HSQLDB的查询与来自另一个记录
RN EID FID FRID TID TFAID
1 364 509 7045 null 7452
2 364 509 7045 7452 null
3 364 509 7045 7457 null
4 375 512 4525 5442 5241
5 375 513 4525 5863 5241
6 375 515 4525 2542 5241
7 576 621 5632 null 5452
8 576 621 5632 2595 null
9 672 622 5632 null 5966
10 672 622 5632 2635 null
我想一个查询,将更换空的'TFAID'列与来自'FID'列'TFAID'列的值匹配。
因此所需的输出将是:
RN EID FID FRID TID TFAID
1 364 509 7045 null 7452
2 364 509 7045 7452 7452
3 364 509 7045 7457 7452
4 375 512 4525 5442 5241
5 375 513 4525 5863 5241
6 375 515 4525 2542 5241
7 576 621 5632 null 5452
8 576 621 5632 2595 5452
9 672 622 5632 null 5966
10 672 622 5632 2635 5966
我知道,像
SELECT RN,
EID,
FID,
FRID,
TID,
(COALESCE TFAID, {insert clever code here}) AS TFAID
FROM LOG
正是我需要的,但我不能为我的生活想出聪明的位的SQL将填写适当的TFAID。
感谢您的回答,它看起来可能会简化我的生活,但我不确定如何在我的查询结构中实现它。上面的问题只是一个更大的多个连接查询中的一小部分。我是SQL新手,对于HSQLDB来说很新,并且http://hsqldb.org/doc/guide/sqlgeneral-chapt.html上的用户指南似乎没有太多关于使用横向的。使用上面的例子,你能解释查询的工作原理吗?谢谢你的时间。 –
如果LATERAL太难实现,则使用标量子查询。在两种情况下,对于每个为null的值,都会执行子查询以从其他行中获取非空值。 – fredt
你给出的标量方法也得到了我的答案,但比第一个答案复杂得多。这种方法还将查询的处理时间缩短了近50%(约5秒到约2.5秒)。再次感谢。 –