1

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

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

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

在我看来,对于每个家庭,如果allowCats="N" 则将allowDogs 设置为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脚本来读取每一行并一次更新一个......但必须有一个更简单的方法......

4

3 回答 3

2

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

UPDATE household
    SET allowsDogs = 1
    WHERE allowsCats = 0;

或者

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

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

于 2013-09-09T17:39:53.143 回答
0

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

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

于 2013-09-09T17:36:22.037 回答
0

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

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

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

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

于 2013-09-09T17:36:31.937 回答