2012-06-24 3 views
1

У меня есть 2 стола, table_a и table_b. Я хочу получить user_id от table_a и обновить запись в table_b за это user_id. Что-то вроде этого:Обновление SQL с использованием значения «где» из другой таблицы?

Select * from table_a where user_id ="Ken" 

if result is 22 

Update score = 1 where id = 22. 

Эти запросы работают, но я хочу объединить их в одном. Может кто-нибудь, пожалуйста, скажите мне, что это лучший способ сделать это?

+1

Какую версию SQL вы используете? mysql/oracle/sql server? Эти разные РСУБД будут иметь разные варианты. –

ответ

6

Попробуйте это должно работать,

UPDATE table_b 
SET score=1 
WHERE id = (select id from table_a where user_id ="Ken") 
3
UPDATE table_b SET score = 1 
WHERE id IN (SELECT * FROM table_a WHERE user_id = "Ken") 
+1

А хорошо поймать pst. Могу помочь, если я ссылаюсь на обновляемую таблицу :) –

1
IF EXISTS (Select * from table_a where user_id ="Ken") 
If result=22 
BEGIN 
UPDATE table_a SET score = 1 
END 
Смежные вопросы