使用带有 2 个表的 CASE 更新

Ant*_*nio 1 sql-server sql-server-2012

我有2个表,我想更新table2与的标准table1table2。标准是:

1.table1.amount > 10000

2.table2.flag为空或table2.flag = '0'

因此,如果 2 个条件为真,则更新table2.flag = '1'table2.flagdate = getdate()

table2.flag是一个检查每个支付超过10,000的人的标志。但是如果已经标记了,我不想再次标记,因为我不能丢失原始的table2.flagdate. 但是我尝试了很多东西,没有任何效果是我想要的。有任何想法吗?

Aar*_*and 8

UPDATE t2 
  SET flag = 1, flagdate = CURRENT_TIMESTAMP
  FROM dbo.table2 AS t2
  INNER JOIN dbo.table1 AS t1
  ON t2.id = t1.id
  WHERE t1.amount > 10000 
    AND (t2.flag IS NULL OR t2.flag = 0);
Run Code Online (Sandbox Code Playgroud)

OR如果将flag列更改为NOT NULLwith default ,则可以避免这种情况0