[英]SQL- UPDATE And SELECT command together
所以我有三张桌子订单,运输,客户。 我想在客户表中将导入值更新为“88”。 但是在 PHP 代码中我只有shipping.tracking_id。 所以我需要内部连接另一个表(在订单表中我有customers.id和shipping.orderid)这些表看起来像这样:
顾客
ID | 进口 | 等等 |
---|---|---|
1234 | 0 | 等等 |
5678 | 0 | 等等 |
订单:
顾客ID | 订单号 | 等等 |
---|---|---|
1234 | 订单_1234 | 等等 |
5678 | 订单_1234 | 等等 |
船运
跟踪号码 | 订单号 | 等等 |
---|---|---|
t1234 | 订单_1234 | 等等 |
t5678 | 订单_1234 | 等等 |
我试过这个代码:
UPDATE customers inner join orders on orders.orderid = customers.id inner join shipping on shipping.orderid = orders.orderid SET customers.import = '88' WHERE shipping.tracking_id = '". $row["tracking_id"] ."';
或这个:
UPDATE customer set import WHERE (SELECT orders.customerid FROM shipping inner join orders on orders.orderid = shipping.orderid WHERE tracking_id = '12345678')
但没有运气。 谢谢!
试试这个解决方案
UPDATE `Customers` `cus`
SET `cus`.`import` = 88
WHERE EXISTS(
SELECT * FROM `Shipping` `s`
INNER JOIN `Orders` `o` on `o`.orderid = `s`.`orderid`
WHERE `s`.`tracking_id` = 't5678' AND `cus`.`id` = `o`.`customerid`
);
在Mysql上测试
如果我的理解是正确的,您应该执行以下操作:
查询将如下所示:
UPDATE customers
SET import = '88'
FROM customers c
JOIN orders o on c.id = o.customerid
JOIN shipping s on o.orderid = s.orderid
WHERE s.tracking_id = 't1234';
试试下面的;
更新客户设置 import = '88' where id = (select orders.customerid from orders where orders.orderid =(select shipping.orderid from shipping where shipping.tracking_id ='tracking_id'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.