Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单个mysql查询,根据选择另一个表的数量更新数量_Php_Mysql_Sql - Fatal编程技术网

Php 单个mysql查询,根据选择另一个表的数量更新数量

Php 单个mysql查询,根据选择另一个表的数量更新数量,php,mysql,sql,Php,Mysql,Sql,我有以下两个查询,我想知道是否可以合并到一个语句中 $sql = "SELECT sale_qty FROM sale_device WHERE id = '$id' "; 及 我想运行一个select查询,从一行中获取设备的当前数量,然后在更新查询中使用该值减去1来设置新数量,但不允许在0以下 这是否可能或建议加入?或者只运行两个查询会更容易吗?是的。我想这正是你想要的: UPDATE device SET qty = (SELECT greatest(sale_qty - 1, 0

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

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

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


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

是的。我想这正是你想要的:

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

如果我正确理解了你的问题,我认为这应该有效:

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\u设备
表有一个
DeviceId
字段

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'