如果存在则更新,如果不存在则插入

时间:2012-12-27 17:08:24

标签: mysql batch-file

  

可能重复:
  How do I update if exists, insert if not (aka upsert or merge) in MySQL?

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

示例用户输入要做更新批处理的价格是这样的

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

数据库就像这样

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

如果datehotelId已经存在,MySQL Query如何进行批量更新和插入条件然后进行更新,但如果不存在则插入?

我理解如果每天循环并检查PHP中是否存在数据将真正花费大量内存。

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

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

1 个答案:

答案 0 :(得分:6)

使用INSERT ... ON DUPLICATE KEY UPDATE ...声明。

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