【问题标题】:Update multiple column from another table using sql server 2005使用 sql server 2005 从另一个表更新多个列
【发布时间】:2016-03-10 21:55:59
【问题描述】:

我有一个名为 table1 的主表,我在其中每天存储或更新 mobileNo 数据一个月。

;WITH table1 AS (SELECT * FROM (VALUES
(9999999999, '01/10/2013', NULL, NULL, NULL, NULL),
(9999999999, NULL, '02/10/2013', NULL, NULL, NULL),
(9999999999, NULL, NULL, '03/10/2013', NULL, NULL),
(9999999999, NULL, NULL, NULL, '04/10/2013', NULL),
(9999999999, NULL, NULL, NULL, NULL, '30/10/2013'),
(9999999999, NULL, NULL, NULL, NULL, NULL),
(8888888888, '01/10/2013', NULL, NULL, NULL, NULL),
(8888888888, NULL, '02/10/2013', NULL, NULL, NULL),
(8888888888, NULL, NULL, '03/10/2013', NULL, NULL),
(8888888888, NULL, NULL, NULL, '04/10/2013', NULL),
(8888888888, NULL, NULL, NULL, NULL, '30/10/2013')) 
as t(mobileno,date1,date2,date3,date4,date30))

我还有另一个名为 table2 的表,我在表 1 中保持唯一的 mobileNo。如果table1 中存在任何数据,现在我想针对table1 更新table2

mobileno        date1      date2      date3      date4      date30
--------------- ---------- ---------- ---------- ---------- ----------
8888888888      01/10/2013 02/10/2013 03/10/2013 04/10/2013 30/10/2013
9999999999      01/10/2013 02/10/2013 03/10/2013 04/10/2013 30/10/2013

但是我尝试了这样的查询

UPDATE table1
set table1.date1 = 
(SELECT date1 from table2 where table2.mobileno = table1.mobileno) 
Where table2.mobileno = table1.mobileno

我如何在一个查询中更新而不重复更新 30 个。日期列,请帮助我。提前致谢。

【问题讨论】:

  • 您可以考虑为您的表使用其他更规范化的结构。

标签: sql sql-server tsql


【解决方案1】:

也许使用以下 UPDATE 语句可以避免 TABLE2 中的 NULL 值更新 TABLE1 中的 NOT NULL 值。

上一篇文章只添加了ISNULL函数

update table1
set 
    date1 = ISNULL(t2.date1, date1),
    date2 = ISNULL(t2.date2, date2)
from table2 t2
where table1.mobileno = t2.mobileno

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2012-08-15
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多