gpt4 book ai didi

php - 在同一 ID 中插入重复 key 更新

转载 作者:行者123 更新时间:2023-11-29 01:54:40 26 4
gpt4 key购买 nike

我需要创建 Chart analist,我想记录那天做了什么。我到处找,找不到如何工作,我找到了一些东西但插入不好,这里有代码

$mysqli->query('
INSERT INTO chart_sales (date, sales_order) VALUES (Now(), sales_order +1)
ON DUPLICATE KEY UPDATE sales_order =VALUES(+1)');
$rslt = mysql_query($stmt);

如何记录当天做了什么,如果放另一个日期生成另一个ID?

这是我的数据库表

-- ----------------------------
-- Table structure for `chart_sales`
-- ----------------------------
DROP TABLE IF EXISTS `chart_sales`;
CREATE TABLE `chart_sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL DEFAULT '0000-00-00',
`sales_order` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of chart_sales
-- ----------------------------
INSERT INTO `chart_sales` VALUES ('1', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('2', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('3', '2015-09-11', '1');
INSERT INTO `chart_sales` VALUES ('4', '2015-09-11', '1');

最佳答案

一些语法错误。这是您要拍摄的内容:

INSERT INTO chart_sales (date, sales_order) VALUES (Now(), someValue) 
ON DUPLICATE KEY UPDATE sales_order =sales_order +1

您需要一个 UNIQUE KEY date

它工作的关键是模式必须具有现有的唯一键,无论是 Primary Key (PK) 还是作为冲突候选者的 unique key。在您的情况下,您所拥有的只是PK。您需要一个 UNIQUE KEYdate

您可以为 clash 设置多个唯一的候选键,只需要一个即可。

因此,如果您没有提供重复的 ID,它将是一个 INSERT。如果会发生冲突,则会发生UPDATE

注意:clash 意味着尝试否则会违反唯一性,这在这里是一件好事,因为有语句,UPDATE 发生了。

然后把它们放在一起

CREATE TABLE `chart_sales` (
`id` int(11) AUTO_INCREMENT primary key,
`date` date NOT NULL,
`sales_order` int(11) NOT NULL,
unique key(`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-11',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;
INSERT INTO `chart_sales` (date,sales_order) VALUES ('2015-09-22',1) on duplicate key update sales_order=sales_order+1;

...

select * from chart_sales;
+----+------------+-------------+
| id | date | sales_order |
+----+------------+-------------+
| 1 | 2015-09-11 | 1 |
| 2 | 2015-09-22 | 3 |
+----+------------+-------------+
2 rows in set (0.00 sec)

关于php - 在同一 ID 中插入重复 key 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com