如果不存在则插入表中,否则更新

时间:2018-02-16 07:55:11

标签: mysql sql

我正在尝试创建一个脚本,以便检查是否存在重复,例如某种类型的汽车。它将从数据库中检查汽车的品牌和类型(volvo 260,volvo),如果存在,则允许用户改变汽车的速度等。到目前为止我已经有了这个:

INSERT INTO cars (id, car_id, car_name, car_make car_speed, car_passengers)
VALUES (1, 1, 'volvo', 'S60', 150, 4)
ON DUPLICATE KEY UPDATE car_speed=VALUES(speed);

我还想检查汽车名称以及汽车品牌。这可能吗?

2 个答案:

答案 0 :(得分:0)

您必须使用该语句

创建具有唯一car_makecar_name的密钥
ALTER TABLE `db_name`.`table_name` ADD UNIQUE `key_name` (`car_name`, `car_make`);

答案 1 :(得分:0)

首先,您应该彻底阅读the documentation

然后,您会发现在 var noteList = _context.Note.ToList(); // Get ID of changed Note var id = noteList.Note.First(x => x.Order == oldIdx).ID; // Change order of Note noteList.Note.First(x => x.Order == oldIdx).Order = newIdx - 1; // Re-arrange and re-apply order-indexes var list = noteList.Note.OrderBy(x => x.Order).ToList(); 中使用values()是完全错误的。

正如 Satish Gupta 所说,您需要在on duplicate列和car_name列上使用

的唯一键
car_make

有关您问题的正确陈述将是

ALTER TABLE db_name.table_name ADD UNIQUE key_name (car_name, car_make);

然后