在mysql中使用单个查询更新所有表中的值
我想在MySql中使用一个查询更新多个列,其中的一些条件在所有列中都有效 我有大约25个数据库,其中有相同的表结构。我需要使用phpMyAdmin的单个查询,在所有数据库中为特定url更新名为在mysql中使用单个查询更新所有表中的值,mysql,Mysql,我想在MySql中使用一个查询更新多个列,其中的一些条件在所有列中都有效 我有大约25个数据库,其中有相同的表结构。我需要使用phpMyAdmin的单个查询,在所有数据库中为特定url更新名为Status的字段 现在我正在使用这个查询。(我需要在url为'www.google.com'的所有这些数据库的表1中设置status=2) 但它正在更新所有行中的数据,而不仅仅是url='www.google.com'。它还在'www.yahoo.com'中更新status=2 请帮我解决这个问题。这就是
Status
的字段
现在我正在使用这个查询。(我需要在url
为'www.google.com'
的所有这些数据库的表1
中设置status=2
)
但它正在更新所有行中的数据,而不仅仅是url='www.google.com'
。它还在'www.yahoo.com'
中更新status=2
请帮我解决这个问题。这就是您想要的:
UPDATE
database1.table1 AS p1
LEFT JOIN database2.table1 AS p2 USING (url)
LEFT JOIN database3.table1 AS p3 USING (url)
SET
p1.`STATUS` = 2,
p2.`STATUS` = 2,
p3.`STATUS` = 2
WHERE
url = 'www.google.com';
而你的工作失败是因为p1.url=p2.url=p3.url
这被评估为
p1.url=(p2.url=p3.url)
其中(p2.url=p3.url)
=>对于所有不匹配的项都为FALSE,
然后我们以p1结束。url=FALSE
比较p1.url=FALSE
=>将字符串与布尔值进行比较,
将字符串转换为整数时,非数字字符串为0,
将布尔值FALSE转换为整数也会得到0,因此p1.url=FALSE
因此p1.url=p2.url=p3.url
与相同,而不是p2.url=p3.url
因此,您的代码将更新存在p2.url的所有行,该p2.url不等于所有p3.url。这就是您想要的:
UPDATE
database1.table1 AS p1
LEFT JOIN database2.table1 AS p2 USING (url)
LEFT JOIN database3.table1 AS p3 USING (url)
SET
p1.`STATUS` = 2,
p2.`STATUS` = 2,
p3.`STATUS` = 2
WHERE
url = 'www.google.com';
而你的工作失败是因为p1.url=p2.url=p3.url
这被评估为
p1.url=(p2.url=p3.url)
其中(p2.url=p3.url)
=>对于所有不匹配的项都为FALSE,
然后我们以p1结束。url=FALSE
比较p1.url=FALSE
=>将字符串与布尔值进行比较,
将字符串转换为整数时,非数字字符串为0,
将布尔值FALSE转换为整数也会得到0,因此p1.url=FALSE
因此p1.url=p2.url=p3.url
与相同,而不是p2.url=p3.url
因此,您的代码将存在不等于所有p3.url的p2.url的所有行更新为删除行,我是否应该执行以下操作:从database1.table1作为p1左连接database2.table1作为p2使用(url)左连接database3.table1作为p3使用(url),其中url='www.google.com';为了删除行,我应该使用(url)从database1.table1中删除p1左连接database2.table1作为p2左连接database3.table1作为p3使用(url),其中url='www.google.com';