如何在Where Condition中检查空表

时间:2011-09-19 10:50:44

标签: sql sql-update

我想同时更新表的多个列。并且从几个表中检索每列的值。我的表是:

Table : Customer
Columns are:
customerCode
kategori
design
designCode
value

Table Name : Customer_kategori 
Columns:

customerCode
kategori

和类似的.....

我的SQL查询是:

UPDATE Customer
SET 
    kategori = Customer_kategori.kategori,
    design = Customer_design.design,
    designCode = Customer_designCode.designCode,
    value = Customer_value.value

FROM 
     Customer_kategori,
     Customer_design,
     Customer_designCode,
     Customer_value
WHERE
     Customer_kategori.customerCode = Customer.customerCode
     AND Customer_design.customerCode = Customer.customerCode
     AND Customer_designCode.customerCode = Customer.customerCode
     AND Customer_value.customerCode = Customer.customerCode

如果所有表(Customer_kategori,Customer_design,Customer_designCode,Customer_value)包含值,则更新列。但如果表是空的, 列未更新为Where条件不满足。

我也尝试在WHERE Con​​dition中使用CASE。我的代码是,

WHERE
        Customer_kategori.customerCode = CASE WHEN Customer_kategori.customerCoder IS NOT NULL THEN Customer.customerCode END
        AND Customer_design.customerCode = CASE WHEN Customer_design.customerCode  IS NOT NULL THEN  Customer.customerCode  END
        AND Customer_designCode.customerCode = CASE WHEN Customer_designCode.customerCode  IS NOT NULL THEN  Customer.customerCode  END
        AND  AND Customer_value.customerCode =   CASE WHEN Customer_value.customerCode  IS NOT NULL THEN  Customer.customerCode  END

但这也不起作用。我也试着查表, 使用以下where子句,

WHERE
    CASE WHEN (select count(Customer_kategori.customerCode) > 0 from Customer_kategori) THEN Customer_kategori.customerCode = Customer.customerCode END

But no success..

简而言之:

  1. 我想检查WHERE子句
  2. 中的表是否为空
  3. 如果它是空的,我只想忽略检查那些空表的列。
  4. 或者可能还有其他更好的方式.... 任何建议都表示赞赏......

    谢谢

1 个答案:

答案 0 :(得分:1)

这会有用吗?

WHERE
(
    Customer_kategori.customerCode = Customer.customerCode
    OR 
    0 = (select count(Customer_kategori.customerCode) from Customer_kategori)
)
AND
(
    ....
)

<强>更新

这个怎么样:

UPDATE Customer
SET 
    kategori = Customer_kategori.kategori,
    design = Customer_design.design,
    designCode = Customer_designCode.designCode,
    value = Customer_value.value

FROM 
     Customer left join Customer_kategori on Customer_kategori.customerCode = Customer.customerCode 
     left join Customer_design on Customer_design.customerCode = Customer.customerCode 
     left join Customer_designCode on Customer_designCode.customerCode = Customer.customerCode 
     left join Customer_value on Customer_value.customerCode = Customer.customerCode