簡體   English   中英

SQL分配用於聯接目的的值到不更新的空字段

[英]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值分配給NULLc2值相同的行,但不希望實際更新表中的值,僅在select運行時將其用於連接到另一個表。

我可以使用內部選擇和聯接來做到這一點,但是我想盡可能地節省處理能力,因為數據量巨大,我認為應該可以使用ISNULLCOALESCE來做到這一點,但是我做不到有足夠的經驗獨自解決這個問題,甚至說是否有可能。 你怎么看?

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM