Что не так с этим утверждением ОБНОВЛЕНИЕ? - PullRequest
0 голосов
/ 22 августа 2011

Мне нужен SQL-запрос для запуска

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 строки.

Я что-то не так делаю?

Ответы [ 3 ]

3 голосов
/ 22 августа 2011

Две конструкции не эквивалентны.Вместо этого попробуйте это

SELECT * 
  FROM function
 WHERE unitRef in
    (select 
    unitRef 
    from project_unit 
    where projectRef=1);
1 голос
/ 22 августа 2011

Вам не хватает ключевого слова "SET" ...

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

Хотя это могло бы дать вам ошибку, а не просто сказать 0 row(s) affected.Существуют ли значения, возвращенные подзапросом, в поле unitRef для таблицы function?

0 голосов
/ 22 августа 2011

для MS SQL Server:

UPDATE [function]
SET active=0
WHERE unitRef in
    (SELECT
    pu.unitRef 
    FROM project_unit as pu
    WHERE pu.projectRef=1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...