繁体   English   中英

SQL-UPDATE 和 SELECT 命令一起使用

[英]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上测试

如果我的理解是正确的,您应该执行以下操作:

  • 与订单一起发货;
  • 加入客户订单
  • 在 shipping.tracking_id 上添加条件

查询将如下所示:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM