繁体   English   中英

MySQL查询内部连接条件,其中ID IN

[英]mysql query inner join condition where id IN

您能提出一种简单查询的最佳方法吗?我有2个表,需要更新表1状态列,然后如果另一列为1,则更新另一个table2。 主要的问题是当我使用where id IN ids时该怎么做

UPDATE table1 SET status = 1 WHERE id IN (ids)

如果每个ID的columnX为1,则

UPDATE table2 SET status = 1 for that id

不能完全确定您的意思,但是我猜您可以使用UPDATE JOIN的某些变体,基本语法如下:

UPDATE table1 t1
  JOIN table2 t2
    ON t2.table1_id = t1.id
   SET t1.status = 1,
       t2.status = CASE 
         WHEN t1.columnX = 1 THEN 1 /* Update if columnX is 1 */
         ELSE t2.status             /* Use old status if not  */
       END CASE
 WHERE t1.id IN (...)

如果columnX的普遍性为1,那么您可以拆分第二部分并在事务中进行单独的查询:

UPDATE table1 t1
   SET t1.status = 1
 WHERE t1.id IN (...)   

UPDATE table2 t2
  JOIN table1 t1
    ON t1.id = t2.table1_id
   AND t1.columnX = 1
   SET t2.status = 1
 WHERE t2.table1_id IN (...) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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