2010-01-01 4 views
2

Я новичок в SQL. пожалуйста, помогите с этим. У меня есть следующий SQL, который обновляет таблицу для компании ticker = SUN из другой таблицы, которая имеет много записей для тикера SUN, и мне нужно использовать только одну запись, соответствующую «Float»Оператор SQL - обновление по двум таблицам

ниже работает, если я заявляю, SUN ', однако, я хочу сделать это для 4000+ символов тикера. Как мне это сделать?

UPDATE dbo.Company 
SET dbo.Company.[Float] = 
    (SELECT dbo.yahoo.[Value Mast] 
      FROM dbo.yahoo 
      WHERE dbo.yahoo.[Value Category]= 'Float' and dbo.yahoo.symbol = 'SUN') 
Where dbo.Company.tick = 'SUN' 

таблица компания выглядит -

Tick 
Float

таблица Yahoo выглядит Symbol Value categoty (один из категории значения здесь FLOAT) Значение мачте (я обновляя это значение в таблице компании для категории значения = всплывают

благодаря

ответ

2

Попробуйте это:

UPDATE Company 
SET [Float] = yahoo.[Value Mast] 
FROM 
    yahoo 
    INNER JOIN Company ON yahoo.symbol = Company.tick 
WHERE 
    yahoo.[Value Category]= 'Float' 

присоединяется может быть использован в FROM постановке UPDATE, до тех пор, как вы обновить только одну таблицу.

+0

Спасибо, что это сработало как шарм. С Новым годом! – Akhit

0

Это обновит значение O е Float для всех строк в Company:

UPDATE 
    dbo.Company 
SET 
    dbo.Company.[Float] = (
    SELECT 
     dbo.yahoo.[Value Mast] 
    FROM 
     dbo.yahoo 
    WHERE 
     dbo.yahoo.[Value Category] = 'Float' 
     AND dbo.yahoo.symbol = dbo.Company.tick 
) 

Суб-запрос в настоящее время ссылается на внешний запрос, чтобы получить имя символа, чтобы посмотреть вверх.

1

Это мой друг - это работа для обновления.

update company set [float] = y.[value mast] 
from 
    company c 
    inner join yahoo y 
     on y.symbol = c.tick 
     and y.[value category] = 'float' 
Смежные вопросы