1

我有两张桌子:

  • 表 1:组名、项目名、状态
  • 表 2:组名、地理位置

我要更新table1。默认状态为 0。我想table1使用单个 UPDATE 语句将状态更新为 1。

我想检查每一行table1是否group_name存在于table2. 如果是这样,我会将状态更新为 1。

我试过这个,但无法得到正确的结果。

UPDATE table1
SET table1.`STATUS`=1 
WHERE table2.group_name=table1.group_name

我怎样才能达到我想要的结果?

4

3 回答 3

3

您可以使用其他人显示的多表更新。但是您也可以使用带有子选择的单个表更新语句以稍微简单的方式执行此操作:

UPDATE table1
SET STATUS = 1 
WHERE group_name IN (SELECT group_name FROM table2)

另请注意,您甚至不需要status在所有行中初始设置为零的前提条件。您可以在单个UPDATE语句中将所有行更新为正确的值:

UPDATE table1
SET STATUS = group_name IN (SELECT group_name FROM table2)
于 2012-06-24T20:57:58.487 回答
3

您可以使用多个更新表语法,因此您的查询将是:

UPDATE table1,table2
SET table1.`STATUS`=1 
WHERE table2.group_name=table1.group_name
于 2012-06-24T21:05:24.010 回答
1

SET 是他的命令...实际格式是: update "tablename" set "columnname" = "newvalue" [,"nextcolumn" = "newvalue2"...] where "columnname" OPERATOR "value" [and|or “列”运算符“值”];

没有启动并运行 SQL 数据库,但我相信 UPDATE 命令类似于 FROM 命令,所以我认为你必须这样做

UPDATE table1, table2 SET table1.'status' = 1 
WHERE table2.group_name=table1.group_name
于 2012-06-24T21:05:15.357 回答