Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中使用单个查询更新所有表中的值_Mysql - Fatal编程技术网

在mysql中使用单个查询更新所有表中的值

在mysql中使用单个查询更新所有表中的值,mysql,Mysql,我想在MySql中使用一个查询更新多个列,其中的一些条件在所有列中都有效 我有大约25个数据库,其中有相同的表结构。我需要使用phpMyAdmin的单个查询,在所有数据库中为特定url更新名为Status的字段 现在我正在使用这个查询。(我需要在url为'www.google.com'的所有这些数据库的表1中设置status=2) 但它正在更新所有行中的数据,而不仅仅是url='www.google.com'。它还在'www.yahoo.com'中更新status=2 请帮我解决这个问题。这就是

我想在MySql中使用一个查询更新多个列,其中的一些条件在所有列中都有效

我有大约25个数据库,其中有相同的表结构。我需要使用phpMyAdmin的单个查询,在所有数据库中为特定url更新名为
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';