根据IF语句更新另一列

时间:2014-01-29 16:02:26

标签: mysql sql if-statement

我从未使用过IF查询,只需要一些帮助。

我的查询 - :

UPDATE cataloginventory_stock_item AS a
INNER JOIN catalog_product_entity AS b
ON a.item_id = b.entity_id
SET a.qty = $mssqlOnHand
WHERE b.sku = '$mssqlCode'

以上是使用MS SQL数据库中的值更新库存数量,我想要做的是更新另一列。如果值大于0则添加值1,如果值为0或更低则为0。

以下是否有效?

IF '$mssqlCode' > 0
SET a.is_in_stock = 1
ELSE 
SET a.is_in_stock = 0

或者查询的顺序是否允许我直接使用qty - :

IF a.qty > 0
SET a.is_in_stock = 1
ELSE 
SET a.is_in_stock = 0

如何设置此查询会有一些帮助。

三江源

3 个答案:

答案 0 :(得分:0)

UPDATE cataloginventory_stock_item AS a
INNER JOIN catalog_product_entity AS b
ON a.item_id = b.entity_id
SET a.is= CASE WHEN a.qty>0  THEN 1 ELSE 0 END

答案 1 :(得分:0)

你有两种方法可以做到这一点..

UPDATE cataloginventory_stock_item AS a
INNER JOIN catalog_product_entity AS b
ON a.item_id = b.entity_id
SET a.qty = $mssqlOnHand,
SET a.SomeOtherField = CASE WHEN $mssqlOnHand > 0 THEN 1 ELSE 0 END
WHERE b.sku = '$mssqlCode'

或者您可以使用计算字段并将其保留在更新语句之外。如果是一次更新,我会先做,如果是每次更新,那么再做第二次。

H个, 奥利

编辑:对于第二个选项,在表格中定义一个列,如下面的CalcColumn ..

CREATE TABLE [dbo].[Table_1](
[SomeColumn] [int] NOT NULL,
[CalcColumn]  AS (case when [SomeColumn]>(0) then (1) else (0) end) PERSISTED NOT    NULL
) ON [PRIMARY]

答案 2 :(得分:0)

使用此

update a 
set a.is_in_stock = case when a.qty > 0 then 1 else 0 end 
from cataloginventory_stock_item AS a   
INNER JOIN catalog_product_entity AS b 
ON a.item_id = b.entity_id

希望它可以帮助你