sql = "INSERT INTO job_list (job_title, company_area, job_ability, company_name, company_welfare, details_link, experience, education, salary_min, salary_max, salary_frequency) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ON DUPLICATE KEY UPDATE company_name = VALUES(company_name), job_title = VALUES(job_title)" values = (row['职位名称'], row['地区'], row['能力要求'], row['公司名字'], row['福利待遇'], row['详情链接'], row['工作经验'], row['学历'], row['最低薪资(K)'], row['最高薪资(K)'], row['薪期']) cursor.execute(sql, values)怎么改为在插入数据时依据company_name 和 job_title一样则更新整个行
时间: 2023-12-09 17:06:26 浏览: 95
要实现根据 `company_name` 和 `job_title` 两个字段进行判断,如果相同则更新整行数据,可以将 SQL 语句修改为以下形式:
```
INSERT INTO job_list (job_title, company_area, job_ability, company_name, company_welfare, details_link, experience, education, salary_min, salary_max, salary_frequency)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
job_title=VALUES(job_title),
company_area=VALUES(company_area),
job_ability=VALUES(job_ability),
company_welfare=VALUES(company_welfare),
details_link=VALUES(details_link),
experience=VALUES(experience),
education=VALUES(education),
salary_min=VALUES(salary_min),
salary_max=VALUES(salary_max),
salary_frequency=VALUES(salary_frequency);
```
其中,`VALUES` 函数用于获取插入时的数据值,`ON DUPLICATE KEY UPDATE` 用于在插入时发现 `company_name` 和 `job_title` 已经存在于表中时执行更新操作。在更新时,将所有列的值都替换为插入时的值,这样就能实现更新整个行的操作。
需要注意的是,在使用该语句前,需要先在 `job_list` 表上创建一个联合唯一索引,包括 `company_name` 和 `job_title` 两个字段,以保证在插入时能够正确判断是否已经存在相同记录。创建索引的语句如下:
```
CREATE UNIQUE INDEX idx_company_job ON job_list (company_name, job_title);
```
阅读全文