mysql update + ( where + join) 语法
Posted
技术标签:
【中文标题】mysql update + ( where + join) 语法【英文标题】:mysql update + ( where + join) syntax 【发布时间】:2012-08-26 00:24:46 【问题描述】: $rs = mysql_query("
SELECT a.id
FROM a
JOIN b ON b.id=a.id
WHERE
b.p1=1 AND
a.p1=1");
while($r = mysql_fetch_assoc($rs))
$ids[] = $r['id'];
$rs = mysql_query("
UPDATE a
SET p2=2
WHERE id IN (".implode(",",$ids).")");
如何在一个查询中做到这一点?
【问题讨论】:
【参考方案1】:UPDATE a
JOIN b ON a.id=b.id AND a.p1 = 1 AND b.p1 = 1
SET a.p2 = 2
【讨论】:
【参考方案2】:您可以使用比IN
子句执行得更好的INNER JOIN
来做到这一点:
UPDATE a
INNER JOIN b
ON b.id=a.id
AND b.p1 = 1
AND a.p1 = 1
SET p2 = 2;
【讨论】:
【参考方案3】:UPDATE a
SET p2=2
WHERE id IN (SELECT a.id
FROM a
JOIN b ON b.id=a.id
WHERE
b.p1=1 AND
a.p1=1)
【讨论】:
您无法更新子查询中使用的同一张表from
以上是关于mysql update + ( where + join) 语法的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 错误代码:在带有 WHERE 子句的 UPDATE 期间出现 1175
在MySQL中阻止UPDATE语句没有添加WHERE条件的发生
怎么撤回MySQL中“update user set host ='%' where user ='root'”的操作,恢复到默认值权限
MYSQL UPDATE SET 在同一列但有多个 WHERE 子句