2011-08-22 142 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'以查看哪些行将被更新。 –