0

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

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;

问题是我想在两者都不存在时插入新行,gmt不是其中之一。例如,我的表已经由city

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

我想插入新行

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

否则应该更新

所以,我希望,我描述了我的问题,一些“聪明人”会帮助我。

4

1 回答 1

0

利用INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO Hourly (gmt, city) VALUES
    (?, ?)
ON DUPLICATE KEY UPDATE
    city = ?
于 2013-07-10T11:10:19.477 回答