我有一个托管在远程服务器上的mysql数据库,我使用的是InnoDB。其他一切正常,但每当我尝试执行以下查询时,都会在phpmyadmin上运行
var helloAppConf = angular.module('helloWorldApp', ['ui.router']);
helloAppConf.controller('secondCtrl' , function($scope, $state){
$scope.id = $state.params.id;
});
它突出显示INSERT INTO User (user_id, location) VALUES (1, 'London') ON DUPLICATE KEY UPDATE location=VALUES('London')
,ON
,DUPLICATE
,因为他们KEY
求救!
答案 0 :(得分:1)
请删除VALUES(...)
部分中的ON DUPLICATE KEY
。
INSERT INTO User (user_id, location) VALUES (1, 'London') ON DUPLICATE KEY UPDATE location = 'London'
如果要更新多个列,则应使用正常的UPDATE
语法:
INSERT INTO User (firstColumn, secondColumn) VALUES (1, 'London') ON DUPLICATE KEY UPDATE firstColumn = 'ABC', secondColumn = 'DEF';
答案 1 :(得分:1)
在使用ON DUPLICATE KEY
之前,您应该为一列或多列添加索引。您可以使用以下命令添加新索引。
ALTER TABLE `table_name` ADD UNIQUE `unique_index`(`column1`);
对于多列索引,请使用以下命令。
ALTER TABLE `table_name` ADD UNIQUE `unique_index`(`column1`, `column2`);
现在,您可以INSERT/UPDATE
一行或多行。
用于插入单行使用以下命令。
INSERT INTO `table_name` (`column1`,`column2`,`column3`,`column4`) VALUES('value1','value2','value3','value4') ON DUPLICATE KEY UPDATE `column3`='value3', `column4`='value4';
OR
INSERT INTO `table_name` (`column1`,`column2`,`column3`,`column4`) VALUES('value1','value2','value3','value4') ON DUPLICATE KEY UPDATE `column3`=VALUES(`column3`), `column4`=VALUES(`column4`);
使用此命令,您还可以INSERT/UPDATE
多行。为此目的使用以下命令。
INSERT INTO `table_name` (`column1`,`column2`,`column3`,`column4`) VALUES('value11','value12','value13','value14'),('value21','value22','value23','value24') ON DUPLICATE KEY UPDATE `column3`=VALUES(`column3`), `column4`=VALUES(`column4`);