2013-06-26 116 views
0

我有以下2個查詢,我想知道如果我可以合併成一個單一的陳述。單個mysql查詢更新數量基於選擇另一個表的數量

$sql = "SELECT sale_qty FROM sale_device WHERE id = '$id' "; 

$sql = "UPDATE device SET qty = $sale_qty WHERE id = $deviceId"; 

我想運行一個選擇查詢的某行獲得設備的當前數量,然後使用一個更新查詢該值減1設置新的數量,但不允許它在0

這是可能的或建議加入?或者只是運行2個查詢會更容易些?

回答

0

是的。我想這你想要做什麼:

UPDATE device 
    SET qty = (SELECT greatest(sale_qty - 1, 0) 
       FROM sale_device 
       WHERE id = '$id' 
      ) 
    WHERE id = $deviceId 
0

如果我理解正確你的問題,我認爲這應該工作:

UPDATE Device D 
    JOIN Sale_Device SD ON D.Id = SD.DeviceId 
SET D.qty = GREATEST(SD.sale_qty-1,0) 
WHERE SD.Id = '$id' 

這是假設Sale_Device表中有一個DeviceId場。

相關問題