我有一张桌子,上面有各行单位的信息行。此信息来自A和B这两个位置。源A包含表中每个单元的信息,而源B包含更准确的信息,但仅适用于某些单元。
我该如何为每个单元选择一行,但是要优先于从源B选择信息(如果有信息)而不是从源A选择信息,从而仅使用来自B的数据为该单元生成一行?现在,如果两个来源中都有一个单元,它将在我的查询中显示为两个不同的行。我曾尝试在where子句中使用case语句,在select语句中使用IF语句。
我觉得有一个非常简单的解决方案,但是由于某种原因,我正在努力解决这个问题。预先感谢。
表结构: UnitKey(PK)UnitID小时数据源
答案 0 :(得分:1)
您可以使用union all
:
select b.*
from b
union all
select a.*
from a
where not exists (select 1 from b where <matching conditions here>);
答案 1 :(得分:1)
加入2个表,大概是A LEFT JOIN B
。您可以在CASE
中使用SELECT
语句来检查表B中的信息是否可用,ELSE
来自表A
。
如果您写的是更详细的问题,我可以写出更详细的答案。
答案 2 :(得分:1)
Boolean({}["length"]+1)
那怎么样?