如何根据同一记录中另一个字段的值更新MySql字段

时间:2013-09-09 17:31:56

标签: mysql sql

我正在尝试更新MySQL表中的值并且确实卡住了。

基本上我想将列的值更新为1,其中另一列(在同一行中)=" N"。它应该很简单,但我无法理解它。

UPDATE household SET allowsDogs=1 WHERE allowsCats="N"

在我看来,对于每个家庭,如果allowCats =" N"然后将allowsDogs设置为1.但我得到一个空的结果集。

我也试过各种变体:

Update household  set allowsDogs=1 where householdID in (select householdID from household where allowsCats="N") 

Update household  set allowsDogs=1 where householdID in (select householdID from copy_of_household where copy_of_household.allowsCats="N")

我正准备编写一个php脚本来读取每一行并一次更新一个....但必须有一个更简单的方法......

3 个答案:

答案 0 :(得分:2)

据推测,您的意思是以下之一:

UPDATE household
    SET allowsDogs = 1
    WHERE allowsCats = 0;

UPDATE household
    SET allowsDogs = 'Y'
    WHERE allowsCats = 'N';

混合数字和字符的标志就像混合猫狗一样。

答案 1 :(得分:0)

您的第一个查询是正确的,但不应返回结果集。

要查看结果,请使用单独的SELECT * FROM household语句。

答案 2 :(得分:0)

您指定的语法是正确的,应该可以使用。我相信这是你被绊倒的地方:

  

但我得到一个空的结果集。

UPDATE查询不返回任何结果集。他们完成他们的工作,然后返回一个空的结果集。但是,您的客户端库或应用程序应该为您提供一种方法来查看有多少记录被更改(但不是哪些记录)。

此外,请注意,如果您要更新的所有字段都已具有您要分配的新值,则数据库服务器可能会跳过更新记录。例如,如果表allowCats等于"N"的表中的所有记录的allowDogs字段都等于1,那么数据库服务器可能不包含那些更新的总行数,因为它们实际上没有更改。