gpt4 book ai didi

mysql - 在 MySQL 中,如何根据连接条件进行插入?

转载 作者:行者123 更新时间:2023-11-29 05:33:05 25 4
gpt4 key购买 nike

感谢您的关注!

背景

我几乎没有使用 LAMP 堆栈的经验,但我最近开始了 online store使用基于 LAMP 堆栈的 OpenCart。

商店允许我为客户分配奖励积分,我为每位新客户提供 10 积分,仅用于创建一个帐户。

不幸的是,OpenCart 管理 GUI 只允许我手动执行此操作,一次一个用户。

但是,我确实可以访问允许我运行 MySql 命令的界面,我想使用这种方法解决问题。

在 OpenCart 创建的数据库中,我有一个 oc_customer 表,其中包含我所有的客户,然后我有一个 oc_customer_reward 表,其中包含客户 ID并在每次客户获得积分时分配一个新记录。这是它的样子:

oc_customer_reward

问题

我如何编写一个 MySql 查询来查看 oc_customer 中的客户是否不存在于 oc_customer_reward 表中,如果不存在,则创建一条记录在该客户的 oc_customer_reward 表(值(value) 10 分)中?

我不要求工作代码(除非你真的想提供它),我愿意自己做这项工作,但坦率地说,我不知道从哪里开始。方法是什么?

更新

根据 Olaf 的建议,我可以使用他建议的查询获取所有不在 oc_customer_reward 表中的客户:

SELECT customer_id
FROM oc_customer
WHERE customer_id NOT
IN (
SELECT customer_id
FROM oc_customer_reward
)

现在,我只需要迭代该查询的结果(抱歉,我不是数据库专家!)并在 oc_customer_reward 中为每个结果插入一行。有点像 C# 中的 foreach 循环。有什么想法吗?

最佳答案

首先找到不在奖励表中的客户:

select customer_id from oc_customer
where customer_id not in (select customer_id from oc_customer_reward);

然后拿走它并在奖励表中插入一个条目:

insert into oc_customer_reward (customer_id, points)
select customer_id, 10 from oc_customer
where customer_id not in (select customer_id from oc_customer_reward);

这还没有经过测试,但我希望它能对您有所帮助。

关于mysql - 在 MySQL 中,如何根据连接条件进行插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058365/

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