2012-12-13 86 views
0

我有两个表: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语句实现这一点?也就是说,如果模型= M001,获得ID,去table.one,0

回答

2

既然你没有提到的变化状态,您可以RDBMS,尝试任何这些:

对于MySQL

UPDATE One a 
     INNER JOIN Two b 
      ON a.ID = b.ID 
SET  a.Status = 0 
WHERE b.model = 'm001' 

对于MSSQL

UPDATE a 
SET  a.Status = 0 
FROM One a 
     INNER JOIN Two b 
      ON a.ID = b.ID 
WHERE b.model = 'm001' 

其他DBMS其中一期工程

UPDATE One 
SET  Status = 0 
WHERE ID = ( SELECT ID 
       FROM two 
       WHERE model = 'm001') 
2
UPDATE TabelOne as a SET Status = 0 
    WHERE a.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 
+1

我们并不需要一个子选择我们呢?如果有参照完整性,则内部连接会更合适。 –

+0

OP没有提到数据库,所以一般子查询将在大多数情况下工作;)和雅加入将会更快总是。 – paragy