MySQL更新了两个表的查询,但只更新了一个表

时间:2012-06-24 20:54:21

标签: mysql

我有两张桌子:

  • 表1:group_name,item_name,status
  • 表2:group_name,geo

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

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

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

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

我怎样才能达到理想的效果?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

SET是他的命令......实际格式是: 更新“tablename” 设置“columnname”=     “NEWVALUE”  [,“nextcolumn”=    “newvalue2” ...] 其中“columnname”   操作员“价值”  [和|或“列”   操作员“价值”];

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

UPDATE table1, table2 SET table1.'status' = 1 
WHERE table2.group_name=table1.group_name