2014-02-06 45 views
0

我遇到了一個問題,我需要根據存儲在另一個表中的值更新一個表。但是,第二個表包含與查詢無關的行。例如:使用另一個表中的某些值的更新表

Table1    

id | active  
------------ 
1 | Yes   
2 | Yes   
3 | Yes   
4 | Yes   

Table2 

id | type | value 
-------------------- 
1 | date | 2011 
1 | name | Glen 
2 | date | 2012 
2 | name | Mike 

我想讀的類型「日期」值,並在這個過程中跳過的名稱,並更新表1。

我已經把以下內容:

UPDATE table1 a, tabel2 b 
SET a.active='no' 
WHERE a.id = b.id 
AND b.type='date' 
AND b.value='2011' 

這似乎並沒有在所有很好地工作。

任何幫助將是偉大的。

+0

標題。刪除一個。 – Rahul

回答

1

id是連接表的關鍵。

UPDATE table1 a, tabel2 b 
SET a.active='no' 
WHERE a.id = b.id 
AND b.type='date' 
AND b.value='2011' 
+0

是的,我使用的ID已經 - 我忘了把它們放在上面。當我運行這個雖然它說0行受到影響? – dave88

+0

也許是因爲我試圖用PHP運行一個cron作業 – dave88

1

試試這個:

UPDATE table1 
SET active = 'no' 
WHERE a.id 
IN ( 
SELECT b.id FROM table2 WHERE type = 'date' AND value = '2011' 
) 
0

這將自然連接使用`兩次using`字

UPDATE table1 
SET active='no' 
WHERE id in 
(
select id from table1 natural join table2 
where 
type='date' 
AND value='2011' 
) 
相關問題