2014-01-29 103 views
0

我從來沒有使用IF查詢,只需要一些幫助。根據IF語句更新另一列

我的query:

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 

或將查詢的順序允許我使用的數量兩個直:

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 
0

2種方法可以做到這一點..

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] 
+0

謝謝,所以沒有IF!這是每一個更新,你能解釋我將如何使用計算字段嗎? – matthew

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 

希望它可以幫助你