MySQL - 基于2个非UNIQUE值的条件插入/行更新

时间:2013-10-31 11:09:24

标签: mysql sql insert

我希望记录不同位置的不同商品的库存。

理想情况下,我只会引用商品ID和位置ID,并在表格中指定数量。

样本数据

id  |  location_id  |  item_id  | qty
1   |  1            | 1         | 10
2   |  1            | 2         | 12
3   |  1            | 3         | 12
4   |  2            | 1         | 5
5   |  2            | 3         | 5
6   |  3            | 2         | 1

我希望编写一个查询,根据位置和项ID检查是否存在行,并根据需要更新或插入行。

我尝试了以下内容:

INSERT INTO `inventory` (`location_id`, `item_id`, `qty`)
VALUES('4', '300', '1')
ON DUPLICATE KEY UPDATE `qty` = `qty` + 1

但问题是它要求每个列中的键值都是主要/唯一。

关于我如何在一份声明中实现这一目标的任何想法?我需要使用IF吗?

1 个答案:

答案 0 :(得分:0)

首先写入查询检查您是否有该条目

$sql = "select * from `inventory` where qty = '4'";
if($row = mysql_fetch_array($sql))
{
then query for update 
}
else
{
query for insert
}