我已经用谷歌搜索了这个问题,但没有发现任何东西。问题是这样的:
我有这样的桌子

CREATE TABLE IF NOT EXISTS `Hourly` (
  `gmt` bigint(20) NOT NULL,
  `city` int(11) NOT NULL,
  `temp` float NOT NULL,
  `temp_min` float NOT NULL,
  `temp_max` float NOT NULL,
  `pressure` float NOT NULL,
  `humidity` int(11) NOT NUL`enter code here`L,
  `temp_kf` float NOT NULL,
  `weather` int(11) NOT NULL,
  `icon` varchar(20) NOT NULL,
  `clouds` float NOT NULL,
  `wind_speed` float NOT NULL,
  `wind_deg` float NOT NULL,
  `rain_3h` float NOT NULL,
  `snow_3h` float NOT NULL,
  `sys_pod` varchar(255) NOT NULL,
  `received` bigint(20) NOT NULL,
   PRIMARY KEY (`gmt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


问题是我想在gmtcity都不存在而不是其中之一时插入新行。
例如,我的桌子已经被

INSERT INTO `Hourly` (`gmt`, `city`, ...) VALUES
(1373446800, 1, ...)


我想插入新行

INSERT INTO `Hourly` (`gmt`, `city`, ...) VALUES
(1373446800, 2, ...)


否则,应更新

因此,我希望我描述了我的问题,并且一些“聪明人”会帮助我。

最佳答案

使用INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO Hourly (gmt, city) VALUES
    (?, ?)
ON DUPLICATE KEY UPDATE
    city = ?

关于mysql - Mysql在2个主键上插入新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17569031/

10-13 08:06