6

可能重复:
如果存在,我如何在 MySQL 中更新,如果不插入(又名 upsert 或合并)?

我有可以为预订引擎批量更新价格的程序。

用于更新批次的示例用户输入价格是这样的

$dateStart = '2012-12-01';
$dataEnd = '2012-12-31';
$hotelId = 1;
$price = 300000;

而数据库是这样的

id | date       | hotelId | price
1  | 2012-12-01 | 1       | 100000

MySQL查询应该如何进行批量更新和插入条件如果date并且hotelId已经存在然后进行更新,但如果不存在则插入?

我知道如果每天循环并检查PHP中是否存在数据真的会花费很多内存。

for($i=1; $i<=31; $i++){...}

我正在寻找解决方案,如何使用可以节省计算机资源的单个/任何 mysql 查询来完成。

4

1 回答 1

7

使用INSERT ... ON DUPLICATE KEY UPDATE ...语句。

它将要求您在datehotelId列上有一个 UNIQUE 或 PRIMARY 复合索引,以便触发 DUPLICATE KEY 条件。

于 2012-12-27T17:10:57.350 回答