将SELECT查询结果中的多行更新为同一个表

Mon*_*nty 3 mysql sql

我想弄清楚如何组合这两个查询.

SELECT `o`.`Order_ID`
FROM `Orders` `o`
JOIN `CustomerDetails` `cd` ON `cd`.`Customer_ID` = `o`.`Customer_ID`
WHERE `o`.`OrderPlaceServerTime` >= '2013-06-01 00:00:00'
AND `o`.`OrderPlaceServerTime` <= '2013-06-31 23:59:59'
AND `cd`.`SalesRep_ID` = 6
Run Code Online (Sandbox Code Playgroud)

这给了我一个Order_ID我需要使用SalesRep_ID = 6上面的查询更新的列表.

Order_ID从上面的查询中获取s 列表后,我使用...

UPDATE Orders SET SalesRep_ID =  '6'
WHERE  (Order_ID = 541304
OR  Order_ID = 541597
OR  Order_ID = 542318)
Run Code Online (Sandbox Code Playgroud)

这样做会使用正确的更新订单SalesRep_ID.

最后,我想结合这些来做一个查询,我只是改变它 SalesRep_ID

pet*_*erm 5

具有适用于MySql的UPDATE语法的解决方案JOIN

UPDATE Orders o JOIN CustomerDetails d 
    ON d.Customer_ID = o.Customer_ID
   SET o.SalesRep_ID = 6
 WHERE o.OrderPlaceServerTime >= '2013-06-01 00:00:00'
   AND o.OrderPlaceServerTime <= '2013-06-31 23:59:59'
   AND d.SalesRep_ID = 6
Run Code Online (Sandbox Code Playgroud)

这是SQLFiddle演示