Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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_Sql - Fatal编程技术网

MySQL健全性检查

MySQL健全性检查,mysql,sql,Mysql,Sql,有人可以对下面的查询运行一个健全性检查吗。我们正在尝试更新数据库,将25000名随机用户迁移到新的测试电子邮件版本(将他们的emp_版本更改为“0.6.3”)。我们只想更改当前活动状态为1且当前emp_版本为“0.6.2”的用户 单表更新 您可以使用orderby和LIMIT。 检查 多表更新(使用内部联接) 在多表更新的情况下,不能在更新查询中使用ORDERBY、LIMIT,为了使用它们,我们使用子查询获得25000个所需的元组,然后对同一个表进行内部联接。我们无法更新子查询表,因为它实际上不

有人可以对下面的查询运行一个健全性检查吗。我们正在尝试更新数据库,将25000名随机用户迁移到新的测试电子邮件版本(将他们的emp_版本更改为“0.6.3”)。我们只想更改当前活动状态为1且当前emp_版本为“0.6.2”的用户


单表更新

您可以使用orderby和LIMIT。 检查

多表更新(使用内部联接)

在多表更新的情况下,不能在更新查询中使用ORDERBY、LIMIT,为了使用它们,我们使用子查询获得25000个所需的元组,然后对同一个表进行内部联接。我们无法更新子查询表,因为它实际上不存在于数据库中

尝试下面的查询

UPDATE email_users eu INNER JOIN 
      (SELECT * FROM email_users 
      WHERE emp_version="0.6.2" 
      AND active = 1  
      ORDER BY rand() 
      LIMIT 25000) AS neu
SET eu.emp_version="0.6.3" 
WHERE eu.id = neu.id

它应该读到emp_version=“0.6.2”的位置,但在其他地方它工作得很好。谢谢我看不出这个查询比原始查询有什么好处。我遗漏了什么吗?@草莓:你是对的,这就是为什么我要问他代码中的错误。我明白了。你的回答似乎暗示这一点已经得到了回答——也许是在删除的评论中!请让我知道您在查询中遇到的确切错误,因为语法对我来说非常好。没有错误,这只是一个健全的检查,以确保我不会破坏生产数据库。不要挖掘,但您的代码完全正确:)
UPDATE email_users
SET emp_version="0.6.3" 
WHERE active = 1 
AND emp_version="0.6.2" 
ORDER BY rand() LIMIT 25000;
UPDATE email_users eu INNER JOIN 
      (SELECT * FROM email_users 
      WHERE emp_version="0.6.2" 
      AND active = 1  
      ORDER BY rand() 
      LIMIT 25000) AS neu
SET eu.emp_version="0.6.3" 
WHERE eu.id = neu.id