0

我有以下 2 个查询,我想知道是否可以合并到一个语句中。

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

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

我想运行一个选择查询以从一行中获取设备的当前数量,然后在更新查询中使用该值减一来设置新数量,但不允许它低于 0

这可能或建议加入吗?还是只运行 2 个查询会更容易?

4

2 回答 2

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字段。

于 2013-06-26T03:15:40.887 回答
0

是的。我认为这可以满足您的要求:

UPDATE device
    SET qty = (SELECT greatest(sale_qty - 1, 0)
               FROM sale_device
               WHERE id = '$id'
              )
    WHERE id = $deviceId
于 2013-06-26T03:11:27.560 回答