2011-12-20 19 views
0

在1服務器請求sql中,如何檢查表的值是否大於零,如果該值大於零,則遞減該值,然後返回該行的那一行表..Transact SQL遞減表值然後爲MYSQL返回項目

counthere = SELECT COUNT(*) FROM TableName WHERE ColumnName1 > 0 AND ColumnName2 = 'xx'; 
if (counthere > 0) 
{ 
    valuehere = SELECT ColumnName1 FROM TableName WHERE ColumnName2 = 'xx'; 
    UPDATE TableName SET ColumnName1 = (valuehere - 1) WHERE ColumnName2 = 'xx'; 
    SELECT * FROM TableName WHERE ColumnName2 = 'xx'; 
} 

我想使用Transact-SQL執行1請求到服務器..這可能嗎?你能幫我一個例子嗎?感謝鄉親..


我用@阿里翁的解決方案,但我仍然得到這個錯誤..

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT * 
      FROM inventorylist 
      WHERE BarcodeNum' at line 1 
[Err] IF EXISTS(SELECT * 
      FROM inventorylist 
      WHERE BarcodeNumber = '9555440808279' AND NotificationQuantity > 0) 
THEN 
     UPDATE inventorylist 
     SET NotificationQuantity = NotificationQuantity - 1 
     WHERE BarcodeNumber = '9555440808279' 

     SELECT * 
     FROM inventorylist 
     WHERE BarcodeNumber = '9555440808279' 
END 
[Msg] Finished - Unsuccessfully 
-------------------------------------------------- 
+0

使用存儲過程的答覆 – 2011-12-20 09:27:42

+0

感謝..我只是想使用Transact-SQL .. :)在MySQL – 2011-12-20 09:31:20

+0

T-SQL?我從來沒有聽說過。 – 2011-12-20 10:00:49

回答

1

如果我理解你的權利。你想是這樣的:

IF EXISTS(SELECT * FROM TableName WHERE ColumnName1 > 0 AND ColumnName2 = 'xx') 
    THEN 
     UPDATE TableName SET ColumnName1 = ColumnName1-1 WHERE ColumnName2 = 'xx' 
     SELECT 
      * 
     FROM 
      TableName 
     WHERE 
      ColumnName2 = 'xx' 

END IF 

希望這有助於

+0

你好..我在執行時遇到這個錯誤.. 你的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,以便在'IF(EXISTS(SELECT NULL FROM inventorylist WHERE BarcodeNumber ='9555440808279'A')第1行 – 2011-12-20 09:54:08

+0

即時使用MySQL .. – 2011-12-20 09:54:34

+0

我正在更新解決方案。這將有助於:) – Arion 2011-12-20 10:04:32