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

Gus*_*ooL 5 mysql batch-file

可能重复:
如果存在则如何更新,如果不是(也就是upsert或merge)在MySQL中插入?

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

用于进行更新批处理的示例用户输入价格是这样的

$dateStart = '2012-12-01';
$dataEnd = '2012-12-31';
$hotelId = 1;
$price = 300000;
Run Code Online (Sandbox Code Playgroud)

数据库是这样的

id | date       | hotelId | price
1  | 2012-12-01 | 1       | 100000
Run Code Online (Sandbox Code Playgroud)

应该如何在MySQL查询,做批量更新,并与条件,如果插入date,并hotelId与已存在再做更新,但如果不存在的不插?

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

for($i=1; $i<=31; $i++){...}
Run Code Online (Sandbox Code Playgroud)

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

Ted*_*opp 6

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

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