我从未使用过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
如何设置此查询会有一些帮助。
三江源
答案 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
希望它可以帮助你