2015-09-02 5 views
-1

У меня есть две таблицы. Один из них - payment1, а другой - payment2. Оба они имеют 4 взаимные колонны. Id, InvoiceNumber, TransactionCode и Date. В таблице payment1 некоторые из TransactionCode отличаются или отсутствуют. Поскольку некоторые из них разные, я хочу обновить его, используя TransactionCode от payment2 в соответствии с номером Id, где они отличаются.Обновление столбца таблицы из таблицы другой таблицы

Я знаю, что это немного запутанным, так что позвольте мне объяснить это на примере:

  • в таблице payment1, Идентификатор 926 и код транзакций 5398. В таблице payment2, Id является 926, но сделка код 53269845.

  • в таблице payment1, Id - 927, а код транзакции - null. В таблице payment2, Id является 926, но код транзакции 54895321.

Я хочу сказать, где Id s те же, обновить TransactionCode с использованием другой таблицы.

Я попытался это:

"update payment1 set payment1.TransactionCode=payment2.TransactionCode 
from payment1 
join payment2 on (payment1.TransactionCode=payment2.TransactionCode)" 

и это была ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 from payment join table63 on (payment1.TransactionCode=payment2.TransactionCode)' at line 1 

Спасибо об этом заранее.

+0

Пример данных и правильной базы данных тег будет большой помощью. –

+0

Какая СУБД вы используете? Postgres? Oracle? –

+0

Я использую MySQL на phpMyAdmin – Sean

ответ

1
UPDATE Payment1 P1 
SET P1.TransactionCode= (SELECT P2.TansactionCode FROM Payment2 P2 WHERE P1.TransactionCode<>P2.TransactionCode AND P1.Id=P2.Id) 

ИЛИ

UPDATE Payment1 
SET Payment1.TransactionCode= (SELECT Payment2.TansactionCode FROM Payment2 WHERE Payment1.TransactionCode<>Payment2.TransactionCode AND Payment1.Id=Payment2.Id) 

Где payment1 & Payment2 являются имя таблицы (предполагается) И, ID & TransactionCode ли столбец Имя (предполагается)

+0

Я не понимаю, что такое P2 и P1? – Sean

+0

Это псевдоним @Sean. Вы можете написать как этот способ тоже .. UPDATE payment1 SET Payment1.TransactionCode = (SELECT Payment2.TansactionCode FROM payment2 WHERE Payment1.TransactionCode <> Payment2.TransactionCode И Payment1.Id = Payment2.Id) –

+1

Я проверю и ответьте как можно скорее. Спасибо за ваши усилия. – Sean

1
update payment1 TB1 
    set TB1.Transactioncode=(select B.Transactioncode from payment2 B 
    JOIN payment1 a 
    on a.Transactioncode=B.Transactioncode AND B.Transactioncode=TB1.Transactioncode) 
Смежные вопросы