gpt4 book ai didi

mysql - 检查表中是否存在用户 ID,然后更新,否则插入 mysql 版本 5.7.15

转载 作者:行者123 更新时间:2023-11-29 11:00:37 24 4
gpt4 key购买 nike

所以我想实现一个 UPSERT 查询。我不想查询并首先检查用户是否存在,然后插入,而是我想在插入期间检查并更新字段如果用户存在。我已经尝试了所有这些查询,但没有任何效果。

INSERT INTO `sys_cart` (`userid`, `product_ids`, `date_added`, `date_updated`, `date_deleted`)
VALUES (2 ,`3,4`, `2017-02-01 00:00:00`, `2017-02-01 00:00:00`, null)
ON DUPLICATE `sys_cart.userid` UPDATE `product_ids` = '12,13';

INSERT INTO 'sys_cart'
VALUES (4, '34,12', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null)
ON DUPLICATE userid UPDATE product_ids = VALUES('3,4');

INSERT INTO 'sys_cart'
VALUES (4, 'Gorilla', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null)
ON DUPLICATE userid UPDATE product_ids;

INSERT INTO 'sys_cart'
VALUES (4, 'Gorilla', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null)
ON DUPLICATE userid UPDATE product_ids = VALUES('3,4');

INSERT INTO sys_cart (userid, product_ids, date_added, date_updated, date_deleted)
VALUES (4, "Gorilla", "2017-02-01 00:00:00", "2017-02-01 00:00:00", null)
ON DUPLICATE userid UPDATE product_ids = VALUES("3,4");

INSERT INTO sys_cart (userid, product_ids, date_added, date_updated, date_deleted)
VALUES (4, "Gorilla", "2017-02-01 00:00:00", "2017-02-01 00:00:00", null)
ON DUPLICATE userid UPDATE product_ids = "3,4";

我哪里出错了?

最佳答案

根据 documentation ,语法是ON DUPLICATE KEY,字面意思。您无法指定哪个列是查询中的键 - 这是在表级别定义的。

你的语法应该是:

INSERT INTO sys_cart 
VALUES (4, '34,12', '2017-02-01 00:00:00', '2017-02-01 00:00:00', null)
ON DUPLICATE KEY UPDATE product_ids = VALUES(product_ids)

您可能还缺少的是,userid 必须定义为 sys_cartPRIMARY KEY。您可能需要执行以下操作:

ALTER TABLE sys_cart 
MODIFY COLUMN userid INT PRIMARY KEY
<小时/>

顺便说一句,您应该考虑使用子表来存储产品 ID,而不是将 CSV 填充到单个字段中,这样以后会很难处理。

关于mysql - 检查表中是否存在用户 ID,然后更新,否则插入 mysql 版本 5.7.15,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42350705/

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