Обновление SQL внутренний Присоединиться успешно, но обновить весь список - PullRequest
0 голосов
/ 03 октября 2018

У меня есть две таблицы (katalan и dominus) с отношением в code_id, когда я использую select

select No_list, name, a.code_id, b.address, email
from katalan a inner join dominus b on a.code_id=b.code_id
where b.address='NY'
order by No_list;

, как показано ниже:

No_list name    a.code_id   b.address   email
1       ahmed   222           NY        cccc@bcde.com
2       hasan   222           NY        bbbb@bcde.com
3       david   222           NY        aaaa@bcde.com

В моем случае я хочу обновитьb.адрес конкретно только в том случае, если

No_list='1'

это мой запрос,

UPDATE b 
set b.address='LA' 
from dbo.katalan as a 
inner join dbo.dominus as b 
on a.code_id=b.code_id
where a.No_list='1';

, но когда я обновлюсь, покажите, как показано ниже

No_list name    a.code_id   b.address   email
1       ahmed   222           LA        cccc@bcde.com
2       hasan   222           LA        bbbb@bcde.com
3       david   222           LA        aaaa@bcde.com

Моя таблица условийв доминусе при выборе

select * from dominus where code_id='222'

Моя таблица после обновления показывает, как показано ниже, до того, как адрес обновления должен быть 'NY':

code_id    address  
 222          LA    

Ожидание, когда я делаю обновление, обновляется только 1 списоккак показано ниже:

No_list name    a.code_id   b.address   email
1       ahmed   222           LA        cccc@bcde.com
2       hasan   222           NY        bbbb@bcde.com
3       david   222           NY        aaaa@bcde.com

Примечание: я сделал простое объяснение моей проблемы с этим условием.

В этих условиях я просто хочу обновить адрес только 1 списка с No_list = 1. Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Проблема решается, когда я добавляю дополнительное значение в code_id в таблице dominus, поэтому при выборе

select * from dominus;

показывать запись, как показано ниже:

code_id    address  
 221          LA
 222          NY

и простое обновление запроса

update katalan
set code_id ='221'
where No_list='1';

работает как шарм

No_list name    a.code_id   b.address   email
1       ahmed   221           LA        cccc@bcde.com
2       hasan   222           NY        bbbb@bcde.com
3       david   222           NY        aaaa@bcde.com
0 голосов
/ 03 октября 2018

Ваш синтаксис запроса на обновление неверен.Вы не можете использовать from в запросе на обновление.Основная суть синтаксиса запроса на обновление в MySQL: Update <tables with joins> Set <field = value> Where <conditions>

Полный синтаксис и описание, можно прочитать по адресу MySQL doc :

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

Попробуйте вместо этого следующее:

UPDATE dbo.katalan AS a 
INNER JOIN dbo.dominus AS b ON a.code_id = b.code_id
SET b.address = 'LA' 
WHERE a.No_list = '1';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...