mysql - 存在则更新,不存在则插入

标签 mysql batch-file

<分区>

Possible Duplicate:
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 查询应该如何进行批量更新和插入条件,然后进行更新,但如果不存在,则进行插入?

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

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

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

最佳答案

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

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

关于mysql - 存在则更新,不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058411/

相关文章:

mysql - 在 mysql 中,cast() str_to_date() 和 varchar 哪个更快更好,为什么

php和mysql登录脚本错误

php - Codeigniter:基于选择的查询

batch-file - 批量创建隐形文件夹

java - 无法通过拖放批处理文件来访问 jar 文件

php - 如何连接这 3 个表并使我的 Select 查询起作用?

MySQL JOIN 不唯一的表/别名 :

windows - 从 IPConfig 获取 IP 地址,稍后在代码中使用,或保存

batch-file - 批量ListFile.txt创建问题

string - 如何在日志文件中查找子字符串并使用 dos 批处理文件增加计数器