2011-08-22 137 views
0

我需要一個SQL查詢來運行這個UPDATE語句有什麼問題?

UPDATE function 
SET active = 0 
WHERE unitRef IN 
    (SELECT unitRef 
     FROM project_unit 
     WHERE projectRef = 1); 

當我運行此查詢,phpMyAdmin的說,0行受到了影響。 然而,當我運行下面的代碼獨立:

SELECT unitRef 
    FROM project_unit 
WHERE projectRef = 1 

它返回我1個多排。

我做錯了什麼?

+0

不應該'更新功能設置活動= 0 ...'? – home

回答

0

MS SQL Server的:

UPDATE [function] 
SET active=0 
WHERE unitRef in 
    (SELECT 
    pu.unitRef 
    FROM project_unit as pu 
    WHERE pu.projectRef=1); 
1

你錯過了 'SET' 關鍵字...

UPDATE `function` 
SET active = 0 
WHERE unitRef IN (SELECT unitRef FROM project_unit WHERE projectRef = 1); 

雖然這會給你一個錯誤,不只是說0 row(s) affected。子查詢返回的值是否存在於表functionunitRef字段中?

+0

是那個列存在。我編輯了這個問題。我忘了僅在有問題的情況下輸入set關鍵字。這就是爲什麼它沒有給我一個錯誤.. – DonkeyKong

+0

對不起 - 這是措辭不佳。子查詢返回的值是否存在於表'function'的字段'unitRef'中,這是我應該說的。 –

+0

也是這樣:) – DonkeyKong

3

這兩個構造不相同。相反,試試這個

SELECT * 
    FROM function 
WHERE unitRef in 
    (select 
    unitRef 
    from project_unit 
    where projectRef=1); 
+0

@DonkeyKong:這是查詢必須返回給你一些數據。將'UPDATE TABLE SET ...'替換爲'SELECT * FROM Table'以查看哪些行將被更新。 –