2012-12-27 458 views
4

可能重複:
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 

應該如何MySQL查詢,做批量更新,並與條件插入

例如用戶輸入如果datehotelId已經存在,則更新,但如果不存在,請插入?

我明白如果每天做循環並檢查數據是否存在於PHP中,將會真的花費太多內存。

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

我正在尋找解決方案如何將其與單/任何MySQL查詢,可以節省計算機資源來完成。

回答

5

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

這將需要您在datehotelId列上具有UNIQUE或PRIMARY複合索引,以便觸發DUPLICATE KEY條件。

+0

如何創建獨特的複合索引? – GusDeCooL

+1

@GusDeCooL - 簡單:'ALTER TABLE表ADD ADD UNIQUE KEY(date,hotelId)'。請參閱[ALTER TABLE語句](http://dev.mysql.com/doc/refman/5.5/en/alter-table.html)上的文檔。 –

+0

謝謝,它的工作原理! :d – GusDeCooL

相關問題