Mysql SQL从一个表更新到另一个表,没有公共数据
在myCustomer表中,有一行名为*inactive_status*,它始终设置为“Active”。除非*is_paid*(位于Billing_Info表中)设置为0。我需要使用Update命令,但无法找到它。以下是我到目前为止的情况:Mysql SQL从一个表更新到另一个表,没有公共数据,mysql,oracle-sqldeveloper,Mysql,Oracle Sqldeveloper,在myCustomer表中,有一行名为*inactive_status*,它始终设置为“Active”。除非*is_paid*(位于Billing_Info表中)设置为0。我需要使用Update命令,但无法找到它。以下是我到目前为止的情况: UPDATE Customer SET inactive_status = 'INACTIVE' WHERE (SELECT is_paid FROM Billing_Info WHERE billing_info.is_paid = 0); DDL: 有
UPDATE Customer
SET inactive_status = 'INACTIVE'
WHERE
(SELECT is_paid
FROM Billing_Info
WHERE billing_info.is_paid = 0);
DDL:
有什么建议吗?您应该调查触发器的使用情况。设置触发器,使特定客户的
非活动状态
在其已付费时更新为非活动状态
,将标志更改为0将是一个完美的解决方案。将客户
连接到计费信息
的唯一方法是计费信息id
如果您的RDBMS是Oracle,那么您的更新
查询可能如下所示
UPDATE (SELECT c.inactive_status
FROM customer c INNER JOIN
billing_info b ON c.billing_info_id = b.billing_info_id
WHERE b.is_paid_this_month = 0)
SET inactive_status = 'INACTIVE';
这是假设关系为1:1,很难从ddl中确定
这里是您的账单信息表中应该有一个客户id。否则,您如何知道哪些客户机应该更新?有,但客户id与非活动状态无关。我在用别人的作品,不能回去改变任何东西。基本上,每个客户都有存储在多个表中的信息,我现在处理的数据在它们之间没有链接,但需要链接。请为这两个表发布DDL(创建表语句)customer
和Billing\u Info
创建表Billing\u Info
(
账单信息id INT,
账单日期id INT,
是过期号(1,0)不为空,
日期上次付款日期,
是本月付款号(1,0)不为空,
付款金额小数点(6,2)不为空,
账单金额小数点(6,2)不为空,
约束计费信息id\u pk主键(计费信息id)
;
创建表客户
(
客户id INT,
加入日期不为空,
计费信息id INT不为空,
非活动状态VARCHAR2(25),
联系人信息id INT不为空,
约束客户id\u主键(客户id)
)
非常好的建议!如果我熟悉触发器,对我来说会更好,但不幸的是,我只是一个初学者。谢谢!我发现我可以这样做,或者将非活动状态放在账单信息表中并以这种方式更新。我认为这样做不管用,但嘿,我没什么好抱怨的。
UPDATE (SELECT c.inactive_status
FROM customer c INNER JOIN
billing_info b ON c.billing_info_id = b.billing_info_id
WHERE b.is_paid_this_month = 0)
SET inactive_status = 'INACTIVE';