2016-01-08 3 views
0

Я пытаюсь выполнить этот запрос, но получаю сообщение об ошибке.Mysql: неверный синтаксис запроса на запрос

update T_CLIENT c set taxe_income = true 
where c.id in (select c1.id from T_CLIENT c1, T_ADRESS a 
where c1.id = a.client_id and a.country_id = 14 and a.adress_principale is true); 

Ошибка:

Вы не можете указать целевую таблицу «с» для обновления в ЕКОМ

Я не знаю, как написать этот запрос в порядке чтобы он работал.
Если у кого есть идея ...
Благодаря

ответ

0

Попробуйте так:

update T_CLIENT c inner join T_ADRESS a on c.id = a.client_id 
set taxe_income = true 
where a.country_id = 14 and a.adress_principale is true 
0

Вам нужно сделать что-то вроде этого:

UPDATE table SET col = (
    SELECT ... FROM (SELECT.... FROM) AS t); 

Вы не можете обновить таблицу и выберите из той же таблицы в подзапросе. как указано here.

0

Вам не нужно присоединиться к этому вопросу;

1. способ

update T_CLIENT c,T_ADRESS a set c.taxe_income = true 
    where c.id = a.client_id 
    and a.country_id = 14 
    and a.adress_principale is true 

2. способ

UPDATE T_CLIENT 
SET T_CLIENT.taxe_income = true 
    FROM T_CLIENT c,T_ADRESS a 
     WHERE c.id = a.client_id 
     and a.country_id = 14 
     and a.adress_principale is true 
+1

1. путь обновления 39 запись и 2. синтаксис кажется неправильным – user1260928

0

Попробуйте это, вы должны использовать псевдоним для подзапроса:

update T_CLIENT c set taxe_income = true 
where c.id in (
    (
    select c1.id from T_CLIENT c1, T_ADRESS a 
    where c1.id = a.client_id and a.country_id = 14 and a.adress_principale is true 
    ) as tmptable 
); 

Для более информации, читайте это: MySQL Error 1093 - Can't specify target table for update in FROM clause

+0

«как tmptable» кажется синтаксической ошибкой для mysqlworkbench – user1260928

+0

TEMPTABLE - это ключевое слово в MySQL, но tmptable - нет. Я не знаю, почему у вас есть синтаксическая ошибка ... – kmas

Смежные вопросы