Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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,我有一张桌子。我只希望根据某些条件更新专栏电子邮件 update users set email='$email' where uid='$uid' 只有在创建表时,如果没有其他记录包含相同的电子邮件id,我才希望更新表用户。您需要将电子邮件栏设置为唯一的,这样就不允许您插入重复的值。现在,您可以使用上述查询,以便在表电子邮件栏中不会重复任何电子邮件没有任何限制不将电子邮件字段/列标记为唯一,那么您可能应该这样做。然后,当出现重复条目时,您将得到一个可以处理的错误 否则,如果我正确理解您的问

我有一张桌子。我只希望根据某些条件更新专栏电子邮件

update users set email='$email' where uid='$uid' 

只有在创建表时,如果没有其他记录包含相同的电子邮件id,我才希望更新表用户。您需要将电子邮件栏设置为唯一的,这样就不允许您插入重复的值。现在,您可以使用上述查询,以便在表电子邮件栏中不会重复任何电子邮件没有任何限制不将电子邮件字段/列标记为唯一,那么您可能应该这样做。然后,当出现重复条目时,您将得到一个可以处理的错误

否则,如果我正确理解您的问题,您需要一个查询来更新给定UID的电子邮件,并且仅当该电子邮件尚未在表中的任何记录中时。 如果是这样的话,那么像这样的事情应该可以做到:

update users
set email='$email'
where uid='$uid' and (select count(1) from users where email='$email') < 1

希望这有帮助

电子邮件id?你能提供表格结构吗?你所说的电子邮件id是什么意思?我们可以看到您只有电子邮件和uid。是否有强制要求您不能将电子邮件字段标记为唯一的?您是否希望您正在更新的电子邮件不应存在于任何记录中?