繁体   English   中英

mysql更新数据检查多表不存在

[英]mysql update data check multi table where not exist

我有5张桌子。 如何更新一个数据,以检查该数据是否在所有5个表中都不存在。

我知道一些类似INSERT ... ON DUPLICATE KEY UPDATE事情,但是找不到多表的示例。

现在,我使用一些较差的查询,例如:

mysql_query("UPDATE table1 SET image = '' WHERE image = '".$image."' ");
mysql_query("UPDATE table2 SET image = '' WHERE image = '".$image."' ");
mysql_query("UPDATE table3 SET image = '' WHERE image = '".$image."' ");
mysql_query("UPDATE table4 SET image = '' WHERE image = '".$image."' ");
mysql_query("UPDATE table5 SET image = '' WHERE image = '".$image."' ");
mysql_query("UPDATE table1 SET image = '".$image."' WHERE id = '".$id."'");

首先为数据为DUPLICATE每个表更新空值,然后插入该值。 我认为这将花费更多的mysql连接...那么如何使用较少的查询来执行此更新? 谢谢。

EDIT1:尝试以下操作,它将更新值ignore,以检查该值是否已经在五个表中退出。

mysql_query("
UPDATE table1,table2,table3,table4,table5 
SET table1.image='".$image."' 
WHERE table1.id='".$id."' 
AND table1.image!='".$image."' 
AND table2.image!='".$image."' 
AND table3.image!='".$image."' 
AND table4.image!='".$image."' 
AND table5.image!='".$image."'
");

好的,我想这就是你要的

update table1 AS t1
         LEFT JOIN table1 AS t1copy
           ON t1copy.image = '$image'       
   set t1.image = '$image'
 where t1.id = $id
   and t1copy.image IS NULL
   and not exists(select 1 from table2 where table2.image = '$image' )
   and not exists(select 1 from table3 where table3.image = '$image' )

暂无
暂无

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

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