Mysql 两个表上的SQL更新查询

Mysql 两个表上的SQL更新查询,mysql,sql,Mysql,Sql,我有两张桌子: Table Name: One id | status ----+-------- 1 | 1 2 | 1 3 | 1 Table Name: Two id | model ----+-------- 1 | m001 2 | m002 3 | m003 假设我想将m001的状态更改为0。如何使用SQL语句实现这一点?i、 e.如果model=m001,获取id,转到表1,将状态更改为0。由于您没有提到您的RDBMS,请尝试以下任一方法: 对于My

我有两张桌子:

Table Name: One
id  | status
----+--------
1   | 1
2   | 1
3   | 1

Table Name: Two
id  | model
----+--------
1   | m001
2   | m002
3   | m003

假设我想将m001的状态更改为0。如何使用SQL语句实现这一点?i、 e.如果model=m001,获取id,转到表1,将状态更改为0。

由于您没有提到您的RDBMS,请尝试以下任一方法:

对于MySQL

对于MSSQL

在其他数据库管理系统上工作

UPDATE  One 
SET     Status = 0
WHERE   ID = (  SELECT ID
                FROM two 
                WHERE model = 'm001')

由于您没有提到您的RDBMS,请尝试以下任何一种:

对于MySQL

对于MSSQL

在其他数据库管理系统上工作

UPDATE  One 
SET     Status = 0
WHERE   ID = (  SELECT ID
                FROM two 
                WHERE model = 'm001')
我的SQL-

   UPDATE TabelOne as a 
   INNER JOIN two as b ON a.id = b.id and b.model = 'm001'
   SET Status = 0
我的SQL-

   UPDATE TabelOne as a 
   INNER JOIN two as b ON a.id = b.id and b.model = 'm001'
   SET Status = 0

我们不需要子选择,是吗?如果存在引用完整性,则内部联接更合适。OP没有提到db,因此一般而言,子查询将适用于大多数数据库;你加入的速度会更快。我们不需要子选择,是吗?如果存在引用完整性,则内部联接更合适。OP没有提到db,因此一般而言,子查询将适用于大多数数据库;而且你的速度永远都会更快。
   UPDATE TabelOne as a 
   INNER JOIN two as b ON a.id = b.id and b.model = 'm001'
   SET Status = 0