【问题标题】:SQL- UPDATE And SELECT command togetherSQL- UPDATE 和 SELECT 命令一起使用
【发布时间】:2021-12-24 18:35:23
【问题描述】:

所以我有三个表订单,运输,客户。我想在客户表中将导入值更新为“88”。但在 PHP 代码中,我只有 shipping.tracking_id。所以我需要内部连接另一个表(在订单表中,我有 customers.id 和 shipping.orderid)这些表如下所示:

客户

id import etc
1234 0 etc
5678 0 etc

订单:

customerid orderid etc
1234 Order_1234 etc
5678 Order_1234 etc

运费

tracking_id orderid etc
t1234 Order_1234 etc
t5678 Order_1234 etc

我试过这段代码:

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')

但没有运气。谢谢!

【问题讨论】:

    标签: php sql


    【解决方案1】:

    试试这个解决方案

    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 上测试

    【讨论】:

      【解决方案2】:

      如果我的理解是正确的,你应该这样做:

      • 与订单一起发货;
      • 与客户联合订单
      • 在 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';
      

      【讨论】:

        【解决方案3】:

        试试下面的;

        更新客户集 import = '88' where id = (select orders.customerid from orders where orders.orderid =(select shipping.orderid from shipping where shipping.tracking_id ='tracking_id'))

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-11
          • 2011-06-03
          • 2018-10-06
          • 1970-01-01
          • 2020-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多