[英]SQL assign value for join purpose to null field without update
有了这个样本数据...
c1 c2 c3
10 a 10a
11 a **NULL**
12 a **NULL**
13 b 13b
13 b **NULL**
etc..
我想将c3
值分配给NULL
和c2
值相同的行,但不希望实际更新表中的值,仅在select运行时将其用于连接到另一个表。
我可以使用内部选择和联接来做到这一点,但是我想尽可能地节省处理能力,因为数据量巨大,我认为应该可以使用ISNULL
或COALESCE
来做到这一点,但是我做不到有足够的经验独自解决这个问题,甚至说是否有可能。 你怎么看?
select
a.c1,
a.c2,
coalesce( a.c3, b.c3) as c3
from table1 a
left join table1 b
on a.c2 = b.c2
an a.c3 is null
and b.c3 is not null
这将与您拥有的数据一起使用,但是,如果给定c2的c3的行多于非null,则会导致问题
如果您的数据库支持max() over
您也可以这样做
SELECT c1,
c2,
coalesce(c3, MAX(C3) over (partition by c2)) c3
from table1
我在查询中经常使用的示例pseudo code
。
DECLARE @USER_ID AS VARCHAR(256)
SELECT @USER_ID = 'abc'
select *
from CC
INNER JOIN adm_co_users CR_US WITH(NOLOCK) ON ISNULL(CR_US.original_userID,'') =
(CASE ISNULL(CC.Createdby,'') WHEN '' THEN @USER_ID
ELSE CC.Createdby END )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.