我想同时更新表的多个列。并且从几个表中检索每列的值。我的表是:
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 Condition中使用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..
简而言之:
或者可能还有其他更好的方式.... 任何建议都表示赞赏......
谢谢
答案 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