[英]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.