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