Mysql 在 2 个主键上插入新行

标签 mysql logic smarty primary-key innodb

我用谷歌搜索了这个问题,但没有找到任何结果。问题是这样的: 我有这样的表

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 都不存在时插入新行,其中之一都不存在。 例如,我的 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/

相关文章:

mysql - 比较两个不同表中的两个列值并根据 24 小时周期计算差异

mysql - 使用playframework和Form<T>删除MYSQL中的一条记录

java - while 循环提前中断,逻辑问题?

python - 如何在 Pandas 数据框中有效地查找交替 boolean 值的索引

php - 聪明的基准,有人吗?

php - foreach SMARTY 中的下一项

mysql - 运行时错误 '3052'。超出文件共享锁定计数。增加 MaxLocksPerFile 注册表项

c++ - 使用 C++ 模板的逻辑函数

php - 在smarty中执行多维sql代码

php - SELECT LAST_INSERT_ID() 未正确生成