2014-10-08 7 views
0

Это то, что я пыталсяMySQL таблицы обновление на основе идентификатора в другой таблице

update site 
set value_id = 4464551 
where (select id from base 
where name = 'myName' and 
discriminator = 'abc' and 
system_id = 001) 

То, что я хочу является

  • обновляют value_id в Тргет месте, где идентификатор = (внутренний оператор выбора)

То, что я получил
- обновляйте все строки сайта

Вопрос
- как я могу получить один идентификатор, внутренний выберите возвращает заявление?

ответ

2

Следующий запрос должен работать.

UPDATE site 
SET value_id = 4464551 
WHERE site.id = (
    SELECT id 
    FROM base 
    WHERE name 'myName' AND 
     discriminator = 'abc' AND 
     system_id = 001 
) 

Или, если вы ожидаете несколько строк, которые будут обновлены:

UPDATE site 
SET value_id = 4464551 
WHERE site.id IN (
    SELECT id 
    FROM base 
    WHERE name 'myName' AND 
     discriminator = 'abc' AND 
     system_id = 001 
) 
0

Вы также можете получить то, что вы хотите без использования внутренних операторов SQL, например:

update site, base 
set site.value_id = 4464551 
where 
base.name = 'myName' and 
base.discriminator = 'abc' and 
base.system_id = 001 and 
site.id = base.id 
Смежные вопросы