我用谷歌搜索了这个问题,但没有找到任何结果。问题是这样的: 我有这样的表
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
都不存在时插入新行,其中之一都不存在。
例如,我的 table 已经填满了
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 在 2 个主键上插入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569031/