2015-06-08 5 views
0

У меня есть две таблицы, одна имеет ссылку на другую. Я хочу сделать следующее:MySQL вложенные запросы с UPDATE и SELECT

UPDATE candidate_skill SET skill_id = skill.id WHERE skill_id = SELECT 

WHERE skill.name = "name" ; 

Является ли мой синтаксис правильным? Как я могу сделать то же самое с соединением?

+0

_is мой синтаксис правильный? _ - Попробуйте. – panther

+0

в вашем запросе, 'skill_id = SELECT', но выберите что? – vivekpansara

+0

Определенно это неверно. – Jens

ответ

0

Это трудно точно определить, что вы пытаетесь сделать на основе вашего запроса, но это, кажется, что вы пытаетесь обновить некоторый набор строк в candidate_skill таблицы, чтобы установить значение skill_id к идентификатору данного skill основы по имени.

Существует несколько способов сделать это. В любом примере вы должны указать правильное предложение where для оператора update, чтобы определить, какие строки обновлены.

Один из способов заключается в использовании подзапрос:

update candidate_skill 
set skill_id = (select id from skill where name = "name") 
where ...; 

Другим решением является использование определяемой пользователем переменной:

select id 
into @skill_id 
from skill 
where name = "name"; 

update candidate_skill 
set skill_id = @skill_id 
where ...; 
0

Нет, это не правильный синтаксис. Ваш запрос должен выглядеть примерно так

UPDATE candidate_skill a 
    JOIN skill b ON a.skill_id = b.name 
SET a.skill_id = b.id 
Смежные вопросы