2013-06-26 82 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场。

相关问题