Обновление SQL Несколько Полей ОТ через Оператор SELECT

На некоторых других языках метасимволы не интерпретируются при использовании одинарных кавычек. Возьмите этот пример в Ruby:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

В Python, если Вы хотите, чтобы строка была взята буквально, можно использовать необработанные строки (строка, которой предшествует 'r' символ):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2
39
задан Juan Mellado 1 May 2012 в 14:10
поделиться

5 ответов

Что-то вроде этого должно сработать (сейчас не могу проверить - по памяти):

UPDATE SHIPMENT
SET
  OrgAddress1     = BD.OrgAddress1,
  OrgAddress2     = BD.OrgAddress2,
  OrgCity         = BD.OrgCity,
  OrgState        = BD.OrgState,
  OrgZip          = BD.OrgZip,
  DestAddress1    = BD.DestAddress1,
  DestAddress2    = BD.DestAddress2,
  DestCity        = BD.DestCity,
  DestState       = BD.DestState,
  DestZip         = BD.DestZip
FROM
   BookingDetails BD
WHERE 
   SHIPMENT.MyID2 = @MyID2
   AND
   BD.MyID = @MyID

Это поможет?

55
ответ дан 27 November 2019 в 02:37
поделиться

вы можете использовать update from ...

что-то вроде:

update shipment set .... от отгрузка внутреннее соединение ProfilerTest.dbo.BookingDetails на ...

1
ответ дан 27 November 2019 в 02:37
поделиться

Я бы написал так

UPDATE s
SET    OrgAddress1 = bd.OrgAddress1,    OrgAddress2 = bd.OrgAddress2,    
     ...    DestZip = bd.DestZip
--select s.OrgAddress1, bd.OrgAddress1, s.OrgAddress2, bd.OrgAddress2, etc 
FROM    Shipment s
JOIN ProfilerTest.dbo.BookingDetails bd on  bd.MyID =s.MyID2
WHERE    bd.MyID = @MyId 

Таким образом, соединение явное, поскольку неявное соединение - это плохо, ИМХО. Вы можете запустить закомментированный выбор (обычно я указываю поля, которые я обновляю, старые и новые значения рядом друг с другом), чтобы убедиться, что то, что я собираюсь обновить, - это именно то, что я хотел обновить.

0
ответ дан 27 November 2019 в 02:37
поделиться

Вы должны уметь что-то делать вместе строки следующего оператора

UPDATE s
SET
    OrgAddress1 = bd.OrgAddress1,
    OrgAddress2 = bd.OrgAddress2,
    ...
    DestZip = bd.DestZip
FROM
    Shipment s, ProfilerTest.dbo.BookingDetails bd
WHERE
    bd.MyID = @MyId AND s.MyID2 = @MyID2

FROM можно сделать более оптимальным (используя более конкретные соединения), но вышеприведенное должно помочь. Кроме того, приятное побочное преимущество написания этого способа - предварительный просмотр изменения UPDATE UPDATE s SET на чтение SELECT ! После этого вы увидите эти данные в том виде, в котором они выглядели бы, если бы обновление имело место.

6
ответ дан 27 November 2019 в 02:37
поделиться

Вы можете использовать :

UPDATE s SET
  s.Field1 = q.Field1,
  s.Field2 = q.Field2,
  (list of fields...)
FROM (
  SELECT Field1, Field2, (list of fields...)
  FROM ProfilerTest.dbo.BookingDetails 
  WHERE MyID=@MyID
) q
WHERE s.MyID2=@ MyID2
6
ответ дан 27 November 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: