Null

用選定單元格上另一個表格的數據填充一個表格

  • October 2, 2014

我在用另一個表中的數據填充一個表中的空單元格時遇到問題。

我有一個包含使用者電子郵件的表格 - 有些欄位是空的,有些已經包含電子郵件。我收集了表格中沒有電子郵件的使用者的電子郵件列表。我將把它作為一個單獨的表導入,然後更新一個現有的表。所以要證明:

現有表(USERS):

ID      Email
1       aaa@bbb.com
2       NULL
3       bbb@bbb.com
4       NULL
5       NULL

第二個表 ( MYTABLE) 具有完全相同的結構,但它只有ID和原始表Emails中的使用者NULL

我將此用作測試,但發現如果該使用者存在於兩個表中,該程式碼將覆蓋電子郵件,我不希望這樣:

UPDATE users
SET users.email = (SELECT mytable.email
                    FROM mytable
                    WHERE mytable.id = users.id)
WHERE EXISTS (SELECT mytable.email
                    FROM mytable
                    WHERE mytable.id = users.id);

那麼是否可以僅更新具有 NULL 值的單元格?

這會奏效;

UPDATE users
SET users.email = (SELECT mytable.email
                    FROM mytable
                    WHERE mytable.id = users.id)
WHERE EXISTS (SELECT mytable.email
                    FROM mytable
                    WHERE mytable.id = users.id)
AND users.email IS NULL;

引用自:https://dba.stackexchange.com/questions/78224